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