我正在使用JMS API将消息发送到Websphere MQ服务器。 拉取我创建的消息的应用程序要我设置ApplicationID字段 在MQMD结构中为常量值。 我无法在JMS API中找到一种方法来访问MQMD结构
问题:有没有办法做到这一点?如果是的话怎么样?如果不是,那么这是我唯一的选择 是使用MQ java API而不是JMS API?
答案 0 :(得分:2)
从v7.0开始,您可以将所有MQMD字段作为JMS消息属性读取,并且可以以相同的方式设置其中的许多字段。
请参阅:http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm41030_.htm
但是客户端和WMQ服务器必须都是v7.0或更高版本才能使用此功能。
答案 1 :(得分:1)
可以从收到的消息中读取MQMD字段。通过调用setMQMDReadEnabled(true)方法在目标上设置MQMDReadEnabled属性。
然后,您可以使用getStringProperty方法读取applicationIdentityData。
答案 2 :(得分:0)
来自MQ文档:
您正在寻找的属性可能是“JMSXAppID”。
如果不起作用,请查看文档。有很多奇怪的东西,比如“如果应用程序使用与代理的实时连接,则此部分不适用”。 (所以你不想要“与经纪人的实时连接”......无论这意味着什么)。
如果没有意义,您必须创建测试用例,以帮助您弄清楚MQ在幕后做了什么。创建一条JMS消息,将所有属性设置为一些奇怪的值,并将其发送到一个非活动的MQ队列,您可以在其中检查它。这样,您就可以确定哪个字段映射到哪里。
在此之后,您可以尝试其他方式。如果JMS实现不允许您将消息的所有属性作为映射或其他内容获取,请使用Java调试器查看内存中的数据。 Field.setAccessible(true)
是你的朋友。