我是 IBM WebSphere MQ 的新手,我想请教您有关解决以下任务的最佳方法。
我使用 WebSphere MQ 7.0,我已经实现了一个 java 应用程序来检查传入消息的 MQ 队列。
传入队列通过以下代码打开:
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE;
MQQueue incomingQueue =
qManager.accessQueue(qName, openOptions, null, null, null);
现在,任务是在 incomingQueue
中出现新消息时以实时模式检查并处理它们。
我通过在 while 循环中调用 incomingQueue.getCurrentDepth()
永久检查队列深度,并检查它是否大于零,然后我收到新消息。
这行得通,但我认为这不是一个好方法。
当新传入消息出现在 MQ 队列中时,获得通知的最佳方法是什么?
谢谢。
最佳答案
只需调用 queue.Get(msg) 方法。这是一个阻塞调用,只有在队列中有消息时才会返回。
如果上述方法不适合,因为它是阻塞调用,您可以查看提供消息监听器的 WMQ JMS。消息监听器用于在回调方法上接收消息,同时主线程可以继续执行其他工作。
MQ 附带了一些很好的示例。您可以在(在 Windows 上)\tools\jms\samples and tools\wmqjava\samples 下找到它们。
关于java - 检查传入消息的 IBM WebSphere MQ 7.0 队列的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8134959/