我试图将我的MQ消息的相关性ID设置为此十六进制数字:
relatedID =“ 414d51205350434954495f5550493032115bf458a7180410”
最初以字符串形式传递给函数

        MQMessage msg = new MQMessage();
        byte[] corrID = null;
        corrID = Base64.getDecoder().decode(correlationID);
        try
        {
            msg.writeString(message);
            msg.correlationId = corrID;
            queue_con.put(msg,pmo);
            corrID = msg.correlationId;
            System.out.println(corrID);
            System.out.println(Base64.getEncoder().encodeToString(corrID));

        }


这是48位数字长。我读过CorrelationID字段可以容纳24个字节/ 48个十六进制数字。但是,当我尝试设置msg.correlationId字段时,该数字被截断为仅32位数字。你能帮我吗?

最佳答案

使用JRE17的XML框架部分:

try {
 msg.correlationId = javax.xml.bind.DatatypeConverter.parseHexBinary(correlationID);
} catch (IllegalArgumentException e) {
 msg.correlationId = correlationID.getBytes();
}

09-11 18:14