【发布时间】:2010-07-22 18:59:42
【问题描述】:
我希望在我的 java 客户端中设置 MQ 标头字段“PutApplName”,并在 JMSXAppID 字段中将其作为 JMS 标头访问。网上的文档讨论了 MQ 标头字段被映射到 JMS 的。有没有人试过这个?
【问题讨论】:
我希望在我的 java 客户端中设置 MQ 标头字段“PutApplName”,并在 JMSXAppID 字段中将其作为 JMS 标头访问。网上的文档讨论了 MQ 标头字段被映射到 JMS 的。有没有人试过这个?
【问题讨论】:
您必须在客户端和服务器上使用 WMQ v7 才能以 JMS 可移植方式执行此操作。由于 v6 将于明年停止使用,因此希望您已经在 v7 上。在 v7 中,所有 MQMD 属性都可以使用消息属性进行访问。在 v6 中,必须降级到特定于 WMQ 的 Java 类中,这并不美观。
也就是说,请看一下 JMS fields and properties with corresponding MQMD fields,它将所有 MQMD 字段映射到相应的 JMS 属性。
有一个写入 MQMD 字段的示例程序,它与 WMQ 客户端一起安装。如果您安装了完整的 WMQ 客户端,而不仅仅是获取 jar 文件,该程序将驻留在:C:\Program Files\IBM\WebSphere MQ\tools\jms\samples\simple\SimpleMQMDWrite.java
示例程序使用 WMQConstants 类而不是直接对字符串值进行编码。您可以找到记录在案的 WMQConstants here。在常量中,您应该找到 JMS_IBM_MQMD_PUTAPPLNAME here。该字段的 JavaDoc 说:
JMS_IBM_MQMD_PUTAPPLNAME
公共静态最终字符串 JMS_IBM_MQMD_PUTAPPLNAME
JMS_IBM_MQMD_PUTAPPLNAME 属性名称。设置或获取 MQ 应用程序 发送消息的名称。设置使用 setStringProperty(JmsConstants.JMS_IBM_MQMD_PUTAPPLNAME,);开始使用 getStringProperty(JmsConstants.JMS_IBM_MQMD_PUTAPPLNAME); 对 Message 对象有效。
请注意,必须通过在 mqm 组中运行(不推荐)或使用 setmqaut 命令来授予应用程序 +setall 权限。 +setall 授权必须同时应用于 QMgr 和特定队列。
【讨论】: