2015-10-19 126 views
0

我试图从一个Java mdb中的websphere mq 8队列管理器接收组消息。 当得到LastMessageInGroup我收到一个jmsxgroupid'ID:45fdea5589'getStringProperty)从消息。 当我试图让这个小组,我使用messageconsumermessageselector在那里,我从上面的附加jmsxsequence添加完全jmsxgroupid,另一消息,但是当从messageConsumer调用方法receiveNoWait我收到NullBytesMessage用于获取组的消息选择器来自websphere的消息mq

有趣的是,当groupid就像是“”它工作的可读字符串。

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

任何提示我应该做什么不同?

感谢这么远的阅读 托马斯

+0

如果您可以发布您的代码,它可能会有所帮助! – Shashi

回答

1

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

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

感谢所有人阅读和思考我的问题!

0

记住,组ID,就像邮件ID和的correlationID,不是一个字符串字段。你说它是可行的,因为它是一个人类可读的字符串,这意味着它的失败时间是GroupID不可读的时候。这表明您没有为群组中的后续消息请求正确的GroupID,因为您已经完成了字符串处理。将它视为字节字符串而不是字符串。

+0

嗨莫拉格,谢谢你的回答。我使用不加修改的组ID来查找其他消息,如'ID:8d74 ...'我以某种方式理解文档,这种表示形式是字节字符串的形式吗? –

+0

从你的问题看来,你正在对它进行字符串操作。也许你可以做@Shashi请求并发布你的代码,即不是你的文本中的一行或两行,而是它的一部分。 –