IBM MQListener 不会自动从队列中删除消息
IBM MQListener Not Automatically Remove Message From Queue
我正在使用 .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.A
- ABC.SOMTHING.SHEMA.B
- ABC.SOMTHING.SHEMA.C
- ABC.SOMTHING.SHEMA.D
- ABC.SOMTHING.SHEMA.E
这将加快处理速度,每个队列可以有 1 个侦听器。
我正在使用 .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.A
- ABC.SOMTHING.SHEMA.B
- ABC.SOMTHING.SHEMA.C
- ABC.SOMTHING.SHEMA.D
- ABC.SOMTHING.SHEMA.E
这将加快处理速度,每个队列可以有 1 个侦听器。