MQMD中的messageId表示为24个字节.如果您知道这些生成的平台,您可以通过将字节转换为生成它们的队列管理器的字符集中的字符来为它们的某些部分找到一些含义,但不建议依赖于传输的任何数据在messageID中作为字符数据,因为我看到IBM的语句类似于“MsgId is generated by MQ in an IBM proprietary format and it may change at any time.”
如果要将它们表示为字符串,则应将它们表示为表示24个字节的48个字符的HEX字符串.
下面是IBM在Technote中提供的示例函数getHexString,它将为您执行此转换.你会像这样使用它:
getHexString(theMessage.messageId)
public static String getHexString(byte[] b) throws Exception {
String result = "";
for (int i=0; i < b.length; i++) {
result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
}
return result;
}
A MsgId generated by the queue manager consists of a 4-byte product identifier (AMQ? or CSQ? in either ASCII or EBCDIC, where ? represents a blank character), followed by a product-specific implementation of a unique string. In IBM? MQ this