Mapping JMS Correlation ID to get Message from MQ(MQ7.0/JMS)

本文详细介绍了在使用IBM WAS/MQ7.0环境下如何正确设置和匹配JMS消息的CorrelationID,包括选择器的正确书写方式及如何将原始ID转换为MQserver所需的16进制形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境: WAS/MQ7.0(WAS配置MQ的JNDI)

通过mapping JMS 的 Correlation ID 同步接收返回消息,整了一天,总结一下

 

问题:

     在发送消息的时候,把生成的ID 的通过Message 的 setJMSCorrelationID() 的方法set进去

     然后在接收消息的时候,通过之前set的CorrelationID 收回的消息是null,发现没有mapping上

 

 

原因:

      一个是JMS的选择器(selector)写错了,应该写成带'ID:' 前缀的,example:

 

还有一个,当你把id当成CorrelationID set到Message对象的时候,但消息send到MQ server的时候,有一个相关标识字节的属性,这个属性的值是你set的ID值的16进制,并且是48位的,当你同步接response消息的时候,是通过这个属性去mapping的,而不是你原始set的ID。

 

解决办法:

当你接消息的时候,把你原始的ID,转成定长48的16进制的String

example:

 

参考资料:(辛辛苦苦找了半天啊,不容易啊)

 

http://mqseries.net/phpBB2/viewtopic.php?t=5060&postdays=0&postorder=asc&start=0&sid=e49d679e0d652d29778544a35287b004

 

特别提醒:

IBM官网说,MQ版本7.0.1.0以上才支持 带ID:前缀的。。。低版本的我不知道怎么实现,欢迎补充。。

官网说明链接:http://www-01.ibm.com/support/docview.wss?uid=swg1IZ37281

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值