如何通过MQJavaClient设置消息ID

时间:2017-12-22 15:56:11

标签: jms ibm-mq

我正在尝试通过MQJavaClient将自定义字符串设置为消息ID我所做的事情如下所示:

  1. 字符串我想放在消息ID

    example :92f5fd96300e8dce
    
  2. 从在线获取十六进制数[codebeautify.org]

    example:39326635666439363330306538646365  
    
  3. 在Java客户端代码中如下

    String str = "39326635666439363330306538646365";  
    sendmsg.messageId = str.getBytes();  
    
  4. 当尝试打印messageid时,它会提供一些其他结果

    sendmsg.messageId : [B@1b40d5f0  
    

    仍然需要使用MQ消息填充messageid。

    请帮助设置MQ Message的自定义消息ID。

      

    Roger / Josh 2017年12月26日

    需要帮助
    如果您需要/想要存储自己的消息ID或事务ID,则使用消息属性或MQMD的Correlation ID字段 - 只是不要使用MQMD的消息ID。
    在我们的应用程序中,我们使用msgid / txnid和相关ID msgid / txnid对于每个事务都是不同的(对于请求响应应该是相同的) 所有交易中的相关ID都相同。

    现在正在尝试什么?
    1.系统A和系统B通过MQ进行通信
    2.现在,系统B突然以不同的格式作为响应进行响应,而系统A无法执行其操作 3.现在我的工作是通过java客户端模拟系统B的响应 4.我在我们的应用程序中发现我们同时使用msgid和correl id 我完全按照系统A完成了相关和读取。
    但是这个msgid不是通过java客户端填充的,而是在日志中显示为msgid为null。

1 个答案:

答案 0 :(得分:0)

在IBM MQ中生成自己的消息ID是个坏主意。当您的应用程序发出MQPUT和/或MQPUT1时,MQ将自动为消息生成唯一的消息ID。

如果您需要/想要存储自己的消息ID或事务ID,请使用消息属性或MQMD的Correlation ID字段 - 只是不要使用MQMD的消息ID。