주어진 주제에서 하나의 메시지를 검색하지만 그 중 하나를 검색하려고하면 주제에 관한 메시지가 있어도 실패합니다. 코드는 destForGet.Get(messageForGet);
이 while 루프에 있고 옵션에서 설정을 기다리는 시간을 제외하고는 IBM이 제공 한 샘플 코드와 동일합니다. 다른 클라이언트가 메시지를 주제에 넣으면 작동합니다. 첫 번째 메시지는 수신되지만 다른 메시지는 수신되지 않습니다. WebSphere7 MQTopic 다중 메시지 검색
// bool RunThread is managed from some other thread; irrelevant for this snippet
// MQTopic destForGet is initialized earlier; irrelevant for this snippet
MQMessage messageForGet = new MQMessage();
MQGetMessageOptions mgo = new MQGetMessageOptions();
mgo.Options = MQC.MQGMO_WAIT | MQC.MQGMO_FAIL_IF_QUIESCING | MQC.MQGMO_SYNCPOINT;
mgo.WaitInterval = 500;
string subName = "SampleSubscription";
while (RunThread)
{
try
{
DestForGet.Get(messageForGet, mgo);
}
catch (MQException mqE)
{
Console.WriteLine("MQException caught. " + mqE.ToString());
}
}
나는, while 루프 내에서 messageForGet를 인스턴스화하는 경우
다음 작동,하지만 (일정/할당 해제 메모리를 할당) 매우 비효율적 인 것 같다 : 샘플 코드는 이하 주어진다. 또한messageForGet.ClearMessage()
은 문제가되지 않습니다. 각 개별 메시지를 인스턴스화하지 않고 주제에서 여러 메시지를 검색 할 수있는 방법이 있습니까?