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

标签 java ibm-mq

我正在尝试从 Java mdb 中的 websphere mq 8 队列管理器接收组消息。 获取 LastMessageInGroup 时,我从消息中收到一个 jmsxgroupid,例如 'ID:45fdea5589' (getStringProperty)。 当我尝试获取该组的其他消息时,我使用带有 messageselectormessageconsumer ,其中我精确添加 jmsxgroupid > 上面有一个额外的 jmsxsequence,但是当从 messageConsumer 调用方法 receiveNoWait 时,我收到一个 Null BytesMessage

有趣的是,当 groupid 是人类可读的字符串(如“20151019”)时,它就可以工作。

所以这是准则的一部分。
我们在 MDB 的 onMessage 方法中接收 lastMessage。
我们用方法读取这个lastMessage的JMSXGroupID
字符串 gid = lastMessage.getStringProperty("JMSXGroupID")。 然后我们构建一个选择器来获取该组的其他消息,如下所示:
String strSelector = "JMSXGroupID='"+ gid + "' AND JMSXGroupSeq=1";
消费者 = session.createConsumer(destIncoming, strSelector);
bmCurrentMessage = (BytesMessage)consumer.receiveNoWait();
当 gid 类似于“ID:8d74b544d5862f32156cbfe845077c02d18ba33ac51c06aa”时,我们收到空的 BytesMessage! mq 的行为就像队列是空的。
当gid类似于“20151015081515”时,我们会收到群消息的其他消息!

有什么建议我应该做不同的事情吗?

感谢您的阅读 托马斯

最佳答案

经过与 IBM MQ 专家长时间的分析,我们不得不安装 IBM 提供的修复包来解决这个问题。因此,我们的代码显然没有问题,但我们使用的 MQ Server 8 的 IBM 代码内部存在一些问题。

现在通过安装IBM的最新修复程序解决了这个问题。

感谢大家阅读并思考我的问题!

关于用于从 websphere mq 获取组消息的 Java 消息选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33222939/

相关文章:

java - 将通用列表转换为 java 对象

java - Mockito inOrder.verify() 失败 - "Wanted but not invoked ... wanted anywhere AFTER following interaction"

c++ - 使用 WebSphere MQ 的客户端服务器

java - 为什么我的 JNA 使用应用程序没有以正确的方式使用react?

java - 单选按钮作为选项卡在选择时突出显示 (Android Studio)

java - : "Events are received on the UI thread and read on the main loop thread"?是什么意思

java - 我如何获取远程 websphere 应用程序服务器中所有队列名称的列表?

java-8 - 连接到 MQ 管理器时出现 MQ 错误 2495

ibm-mq - 使用 MQ 服务对象运行 OS 命令 - AMQ8734 - 命令失败 - 程序无法启动

ssl - 无法连接到 WebSphereMQ SSL channel