我有一个要求,我必须将MessageID,correlationID,持久性,Expiry和Priority的值从请求MQ消息复制到响应。我使用RFHUtil将请求消息放入队列中。但是当会话bean消息消息时,MQMD头的messageID会更改为某个不同的值-HEXADECIMAL,这与我在RFHUTIL中放入的MessageID不同。
然后我使用set方法,setJMSMessageID等将上述值从请求复制到响应消息,但是一旦我查看响应消息,值就不同了。 这是由于MQ到JMS的转换?什么可以解决这个问题。
之前我使用的是MQ Message,并且能够将所有字段从请求复制到响应。
答案 0 :(得分:0)
IBM MQ中的MessageID始终是十六进制的,无论它是从哪个API,Base MQ或MQ JMS。
发送请求消息时,您不需要设置MessageID。让MQ为您做到这一点。 MQ将为请求消息生成唯一的消息ID。在会话bean中,只需将请求消息的MessageID复制到响应消息的CorrelationID即可。这样您就可以关联请求和响应消息。
有关详细信息,请参阅IBM WebSphere MQ request/reply scenario。
<强> 更新 强>
发送邮件时,将忽略使用setMessageID
方法设置的任何值,但该方法可用于更改收到邮件中的值。
由于在发送消息时忽略了setMessageID
方法设置的消息ID,因此应用程序无法指定外发消息的消息ID。因此,应用程序无法接收消息,然后转发相同的消息,或发送不同的消息,其消息ID与其收到的消息的消息ID相同。请参阅link: