Vote count: 0
I have a queue form which i'd like to be able to retrieve message. I then need to process them somehow (not in the scope) and then remove them from the queue.
I tried to create 2 queues, one that browse the message and one to delete the message after it has been processed.
MQQueue browseQueue = qMgr.AccessQueue(QUEUE_NAME, MQC.MQOO_BROWSE);
MQGetMessageOptions browseOptions = new MQGetMessageOptions()
{
Options = MQC.MQGMO_WAIT | MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQGMO_BROWSE_NEXT,
WaitInterval = MQC.MQWI_UNLIMITED
};
MQQueue acknowledgeQueue = qMgr.AccessQueue(QUEUE_NAME, MQC.MQOO_INPUT_AS_Q_DEF);
MQGetMessageOptions acknowledgeOptions = new MQGetMessageOptions()
{
Options = MQC.MQGMO_WAIT | MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQMO_MATCH_MSG_ID,
WaitInterval = MQC.MQWI_UNLIMITED
};
while (keepRunning.WaitOne(0))
{
MQMessage browseMessage = new MQMessage();
try
{
browseQueue.Get(browseMessage, browseOptions);
}
catch (MQException mqexe)
{
throw;
}
if (browseMessage.MessageType != ShutDown.TYPE)
{
object o = browseMessage.ReadObject();
Console.WriteLine("The message is: {0}", o);
}
browseMessage.ClearMessage();
MQMessage acknowledgeMessage = new MQMessage()
{
MessageId = browseMessage.MessageId
};
acknowledgeQueue.Get(acknowledgeMessage, acknowledgeOptions);
}
But I need to make sure no other process can access the same message. Since, I relied on using 2 queues, I don't see how to do it.
asked 1 min ago
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Exclusive access to read a message from Websphere MQ 7, proccess it then delete it
Aucun commentaire:
Enregistrer un commentaire