关于使用IBM MQ 消息ID(messageId)的几点心得
1 消息ID是可以自定义的,就像表的主键一样。当然也可以让MQ自动生成。
2 两个队列管理器之间传输消息,消息的ID是不会改变的。
3 两个队列管理器生成的消息ID,是会重复的,这种几率比较小。
若你有多台机器向一台机器发送消息,建议根据本地网卡唯一标识自定义
生成消息的ID。
4 使用java获取MQ的消息ID时,消息ID存储在MQMessage类的一个对
外公开的属性,这个属性名称为messageId,属性的类型为byte[24] 。
5 在使用MQ消息浏览器查看时, 对应的"消息标识"就是new String(messageId);
对应的"消息标识字节"就是将每个byte 转换为它的16进制组成的字符串,用代码可表示
为toHexString(byte[0])+toHexString(byte[1])+···+toHexString(byte[23])。
6 获取消息时,new 一个MQMessage对象,将消息ID字符转化为byte数组,
放入messageId,然后通过mqQueue.get(mqMsg, gmo)就能获取到指定的消息。
当消息ID重复时,只能按优先级或消息的次序,优先获取一条消息。