2016-10-01 34 views
0

我有一个要求,我必须将MessageID,correlationID,persistence,Expiry和Priority从请求MQ消息的值复制到响应。我使用RFHUtil将请求消息放入队列中。但是由于会话bean使用的消息,MQMD头的messageID更改为某个不同的值-HEXADECIMAL,这与我在RFHUTIL中放置的MessageID不同。将MQMessage MQMD值复制到JMS消息

然后我使用set方法,将set-MSMessageID等从请求复制到响应消息的上述值,但一旦查看响应消息,值就会不同。 这是由于MQ到JMS的转换吗?什么可以解决这个问题。

早些时候我使用MQ Message,并且能够将所有字段从请求复制到响应。

回答

0

无论从哪个API设置Base MQ或MQ JMS,IBM MQ中的MessageID始终为十六进制。

发送请求消息时不需要设置MessageID。让MQ为你做。 MQ将为请求消息生成一个唯一的消息ID。在会话bean中,只需将请求消息的MessageID复制到响应消息的CorrelationID。这样您可以关联请求和响应消息。

有关更多详细信息,请参见IBM WebSphere MQ request/reply scenario

UPDATE

在发送消息时使用setMessageID方法的任何值集合被忽略,但可使用的方法,在接收到的消息来改变所述数值。

由于setMessageID设置的消息ID在发送消息时被忽略,应用程序无法指定消息的消息ID。因此,应用程序无法收到消息,然后转发相同的消息,或发送不同的消息,并使用与收到的消息相同的消息ID。查看link

+0

谢谢shashi,但要求是发送mesaage ID,因为它在响应消息中没有任何改变。有什么方法可以复制它?相关ID将被复制到响应的相关ID中,而不是在消息ID中。 –

+0

我能够使用基础MQ来完成它,但是由于项目需求,必须转移到jms,并且它正在创建问题。即使持久性,到期时间和优先级的价值也在变化。 –

+0

请在答案中查看我的更新。 – Shashi