IBM JMS MQ在MQM头中添加userID

时间:2017-10-15 19:42:09

标签: java tomcat ibm-mq

如何在IBM JMS MQ中的MQM头中设置userID,默认情况下它将是' mqm'我需要在发送消息时将其设置为不同的userID。我正在使用com.ibm.mqjms jar,应用程序部署在Tomcat上。

1 个答案:

答案 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 +dspqmgr上的+put queue)。