如何在IBM JMS MQ中的MQM头中设置userID,默认情况下它将是' mqm'我需要在发送消息时将其设置为不同的userID。我正在使用com.ibm.mqjms jar,应用程序部署在Tomcat上。
答案 0 :(得分:0)
在您的应用程序中,您需要访问JMS规范之外的一些IBM MQ功能。
IBM MQ v8知识中心介绍了如何在页面“Reading and writing the message descriptor from an IBM MQ classes for JMS application”中使用IBM MQ CMS for JMS设置MQMD属性
必须将Destination对象属性WMQ_MQMD_WRITE_ENABLED设置为true才能使MQMD属性的设置生效。然后,您可以使用消息的属性设置方法(例如setStringProperty)将值分配给MQMD字段。除了StrucId和Version之外,所有MQMD字段都被暴露; BackoutCount可以读取但不能写入。
此示例导致将消息放入队列或主题,并将MQMD.UserIdentifier设置为“JoeBloggs”。 //创建ConnectionFactory,连接,会话,生成器,消息 // ...
// Create a destination // ... // Enable MQMD write dest.setBooleanProperty(WMQConstants.WMQ_MQMD_WRITE_ENABLED, true); // Optionally, set a message context if applicable for this MD field dest.setIntProperty(WMQConstants.WMQ_MQMD_MESSAGE_CONTEXT, WMQConstants.WMQ_MDCTX_SET_IDENTITY_CONTEXT); // On the message, set property to provide custom UserId msg.setStringProperty("JMS_IBM_MQMD_UserIdentifier", "JoeBloggs"); // Send the message // ...
为了使用WMQ_MDCTX_SET_IDENTITY_CONTEXT
,您需要授予连接到IBM MQ队列管理器的用户OAM
对象上的+setid
权限qmgr
以及邮件将queue
所在的PUT
除了您要授予的任何正常权限外(+connect +dsp
或qmgr
上的+put
queue
)。