저는 Websphere MQ 대기열에 메시지를 게시 한 다음 응답을 위해 다른 대기열을 폴링 할 .NET Windows Forms 애플리케이션을 작성 중입니다. 응답이 리턴되면 어플리케이션은 부분적으로 실시간으로 응답을 처리합니다. 그러나 응답은 대기열에 있어야하므로 응답 큐에서 읽는 일일 일괄 처리 작업이 나머지 처리 작업을 수행 할 수 있습니다.Websphere MQ 메시지를 제거하지 않고 찾아 보는 방법은 무엇입니까?
나는 메시지를 읽은 상태 다. 내가 알아낼 수 없었던 것은 제거하지 않고 그것을 읽는 방법입니다.
내가 지금까지 가지고있는 것이있다. 나는 MQ 초보자 다. 그래서 어떤 제안이라도 인정 될 것이다. 그리고 C#에서 응답 해주십시오.
Public Function GetMessage(ByVal msgID As String) As MQMessage
Dim q = ConnectToResponseQueue()
Dim msg As New MQMessage()
Dim getOpts As New MQGetMessageOptions()
Dim runThru = Now.AddMilliseconds(CInt(ConfigurationManager.AppSettings("responseTimeoutMS")))
System.Threading.Thread.Sleep(1000) 'Wait for one second before checking for the first response'
While True
Try
q.Get(msg, getOpts)
Return msg
Catch ex As MQException When ex.Reason = MQC.MQRC_NO_MSG_AVAILABLE
If Now > runThru Then Throw ex
System.Threading.Thread.Sleep(3000)
Finally
q.Close()
End Try
End While
Return Nothing 'Should never reach here'
End Function
참고 : 내 코드는 실제로 메시지를 제거하는 것을 확인하지 않았습니다. 그러나 그것이 MQ가 작동하는 것을 이해하는 방법이며, 그 일은 일어나는 것처럼 보입니다. 그것이 기본 동작이 아니라면 나를 바로 잡으십시오.
+1 - 나 자신을 위해 알아 내려고하기 전에이 질문을 발견했으면 좋겠습니다. –