IBM MQListener不自动从队列中删除消息
本文关键字:队列 删除 消息 MQListener IBM | 更新日期: 2023-09-27 18:16:38
我正在使用。net侦听来自IBM MQ的消息。当它看到消息时,它会自动从队列中删除该消息。我想先检查消息的架构。如果它不是我正在寻找的正确模式,我想把它放在队列中。
如何更改代码,使其在找到消息时不自动从队列中删除消息?
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_FAIL_IF_QUIESCING;
IBM.WMQ.MQQueueManager mqManager = new IBM.WMQ.MQQueueManager(qmName);
MQQueue queue = mqManager.AccessQueue(queueName, openOptions);
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.Options = MQC.MQGMO_FAIL_IF_QUIESCING | MQC.MQGMO_WAIT;
gmo.WaitInterval = MQC.MQWI_UNLIMITED;
queue.Get(message, gmo);
//Only remove message from the queue if a schema check of the message has passed
您可以浏览消息,看看它是否是您需要的,如果确定是,则执行GET操作。GET是破坏性的,并从队列中删除消息,浏览不是破坏性的,但允许您检查内容。
openOptions = MQC.MQOO_BROWSE // open queue for browsing
像分发糖果一样分发队列要好得多。如果有5种不同类型的模式可以在原始队列中着陆,那么你应该只使用5个队列。
例如
- ABC.SOMTHING.SHEMA。
- ABC.SOMTHING.SHEMA。B
- ABC.SOMTHING.SHEMA.C
- ABC.SOMTHING.SHEMA。D
- ABC.SOMTHING.SHEMA.E
它将使处理更快,您可以为每个队列设置一个侦听器。