JMS相关ID被截断

JMS相关ID被截断,jms,mule,ibm-mq,mq,Jms,Mule,Ibm Mq,Mq,我正在将uuid字段设置为出站消息的JMSCorrelationID。我还将reply设置为Queue,并将reply设置为Quemanger以获取COD。设置正确的用户标识符后,我能够在set ReplyTo Q中接收COD消息。但是在COD消息中接收到的correlationID将我的UUID字段的字节截断为32字节。因此,我无法核对收到的COD信息。请在发送邮件时查找以下代码。我省略了ReplyToQ和ReplytoQm部分,但它按预期工作 if(msgUuidId != null){

我正在将uuid字段设置为出站消息的JMSCorrelationID。我还将reply设置为Queue,并将reply设置为Quemanger以获取COD。设置正确的用户标识符后,我能够在set ReplyTo Q中接收COD消息。但是在COD消息中接收到的correlationID将我的UUID字段的字节截断为32字节。因此,我无法核对收到的COD信息。请在发送邮件时查找以下代码。我省略了ReplyToQ和ReplytoQm部分,但它按预期工作

if(msgUuidId != null){
                    msg.setJMSCorrelationID(msgUuidId);
}
logger.info("Setting IBM_REPORT_COD");
msg.setIntProperty(JmsConstants.JMS_IBM_REPORT_COD, MQC.MQRO_COD);
logger.info("Setting JMS_IBM_MQMD_USERIDENTIFIER to :: "+ userid );
msg.setStringProperty(JmsConstants.JMS_IBM_MQMD_USERIDENTIFIER, userid);
我还在目的地上设置MQMD上下文

((MQDestination) destination).setTargetClient(WMQConstants.WMQ_CLIENT_NONJMS_MQ);              
    ((JmsDestination) destination).setBooleanProperty(WMQConstants.WMQ_MQMD_READ_ENABLED, true);
    ((JmsDestination) destination).setBooleanProperty(WMQConstants.WMQ_MQMD_WRITE_ENABLED, true);    
    ((MQDestination) destination).setMQMDMessageContext(WMQConstants.WMQ_MDCTX_SET_IDENTITY_CONTEXT);
在收到邮件时,我读到如下内容:。我正在使用muleapi

String correlationID = (String)eventContext.getMessage().getInboundProperty("JMSCorrelationID");

所以这里我观察到这个值是我设置的uuid的十六进制部分。有人能帮我一下吗?

沙希的评论让我大吃一惊。可以说,MQ将
JMSCorrelationId
截断为48个十六进制数字/24个字节:

注意1:MQMD CorrelId字段可以保存48个十六进制数字(24字节)的标准WebSphere MQ相关ID。JMSCorrelationID可以是byte[]值、包含十六进制字符并以“ID:”为前缀的字符串值,也可以是不以“ID:”开头的任意字符串值。其中前两个表示标准的WebSphere MQ相关ID,并直接映射到MQMD CorrelId字段或从该字段映射到MQMD CorrelId字段(如适用,截断或用零填充);它们不使用MQRFH2 jms.Cid字段。第三个(任意字符串)使用MQRFH2 jms.Cid字段;字符串的前24个字节(UTF-8格式)写入MQMD CorrelID

这与你看到的截断有关联吗?如果是这样,实用的解决方案将是使用24字节的相关ID


干杯,

MQ中的相关ID为24字节长。如果使用的相关id超过24字节,它将被截断。什么类型是
msuuidd
?我似乎还记得JMS规范区分字节数组和字符串,第一个是特定于Provider的,而第二个是特定于应用程序的?在设置MQMD上下文后,这个问题开始出现?我们是否可以将32字节的uuid设置为头中某个其他字段的一部分,而不是相关ID,我们可以使用该字段进行相关?但首先,当我没有设置MQMD上下文时,我使用该字段获取相关ID的所有字节?设置MQMD上下文后,这个问题开始出现?我也需要上下文。如果我删除MQMD上下文,我将获得相关Id。但删除上下文将导致记帐令牌无法通过。我需要记帐令牌和correlationId。你能不能把corrId限制在32字节?它是32字节…但它会被截断为24字节。所以把correlationId限制在24字节?