【发布时间】:2019-02-26 02:10:12
【问题描述】:
我正在尝试从 Java mdb 中的 websphere mq 8 队列管理器 接收组消息。
收到LastMessageInGroup 时,我从消息中收到jmsxgroupid,例如'ID:45fdea5589' (getStringProperty)。
当我试图获取该组的其他消息时,我正在使用带有 messageselector 的 messageconsumer,其中我从上面添加了 jmsxgroupid 和额外的 jmsxsequence,但是当调用该方法时receiveNoWait 来自messageConsumer 我收到Null BytesMessage
有趣的是,当 groupid 是人类可读的字符串时,例如 '20151019' 它可以工作。
所以这是本准则的一部分。
我们在 MDB 的 onMessage 方法中接收 lastMessage。
我们用
方法读取了这个 lastMessage 的 JMSXGroupID
字符串 gid = lastMessage.getStringProperty("JMSXGroupID")。
然后我们构建一个选择器来获取该组的其他消息,如下所示:
字符串 strSelector = "JMSXGroupID='" + gid + "' AND JMSXGroupSeq=1";
消费者 = session.createConsumer(destIncoming, strSelector);
bmCurrentMessage = (BytesMessage) consumer.receiveNoWait();
当 gid 类似于 'ID:8d74b544d5862f32156cbfe845077c02d18ba33ac51c06aa' 时,我们会收到一个空的 BytesMessage! mq 就像队列是空的一样。
当 gid 为 '20151015081515' 时,我们会收到群组消息的其他消息!
我应该做些什么不同的提示?
感谢您的阅读 托马斯
【问题讨论】:
-
如果您可以发布您的代码可能会有所帮助!