Мне удается получить одно сообщение из данной темы, но когда я пытаюсь получить другое сообщение, оно просто перестает работать, даже если в теме есть сообщения. Код аналогичен предоставленному IBM образцу кода, за исключением того, что destForGet.Get(messageForGet);
находится в цикле while с некоторым временем ожидания, установленным в опциях. Другой клиент помещает сообщения в тему, и это работает. Первое сообщение получено, а все остальные нет. Пример кода приведен ниже:
// 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());
}
}
Если я создаю экземпляр messageForGet в цикле while, то он работает, но это кажется очень неэффективным (постоянно выделять / освобождать память). Также messageForGet.ClearMessage()
не помогает в этом вопросе. Есть ли способ получить несколько сообщений из темы, не создавая экземпляры каждого отдельного сообщения?