我试图将我的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();
}