java - 检查传入消息的 IBM WebSphere MQ 7.0 队列的最佳方法

标签 java ibm-mq

我是 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/

相关文章:

java - 添加 spring 组件列表覆盖相同类型的组件

java - 如何通过特定索引在树形图中添加值和键

用于从 websphere mq 获取组消息的 Java 消息选择器

spring-boot - 在 SpringBoot 中,@JmsListener 如何以及何时被调用?

java - 如何获取嵌套参数参数中的注解?

java - toString() 是否应该返回 null?

java - 如何在同一部手机安装Apk开发版和生产版?

ssl - 需要身份验证时如何使用启用了 ssl 的服务器连接 channel 连接到队列管理器

java - 从 java 发送到 MQ 总是使用默认安装的 IBM MQ 版本 6.0 的 mqm 用户标识

spring-boot - 如何使用 Openshift secret 通过 SSL 建立 MQ 客户端连接