使用 IBM MQ classes for Java 处理 IBM MQ 消息头
提供了表示不同类型的消息头的 Java 类。 同时还提供了两个助手类。
MQHeader 接口
头对象由 MQHeader 接口描述,该接口提供了一些常规方法来访问头字段,以及读写消息内容。 每个头类型都有其自己的类,该类能够实现 MQHeader 接口,并为单个字段添加 getter 和 setter 方法。 例如,MQRFH2 头类型由 MQRFH2 类表示;MQDLH 头类型由 MQDLH 类表示等等。 头类会自动执行任何必要的数据转换,并且可以在任何指定的数字编码或字符集 (CCSID) 中读或写数据。
要点: MQRFH2 头类将消息视为随机访问文件,这意味着光标必须位于消息的开头。 在使用内部消息头类 (例如 MQRFH , MQRFH2, MQCIH , MQDEAD , MQIIH 或 MQXMIT) 之前,请确保在将消息传递到类之前将消息的光标位置更新为正确的位置。
助手类
两个助手类 MQHeaderIterator 和 MQHeaderList 可以帮助读取消息中的头内容,并对内容进行解码(解析):
- MQHeaderIterator 类的工作方式与 java.util.Iterator 相似。 因为只要消息中有多个头,next() 方法就会返回 true,nextHeader() 或 next() 方法则会返回下一个头对象。
- MQHeaderList 的工作方式与 java.util.List 相似。 与 MQHeaderIterator 一样,它会解析头内容,但还允许您搜索特定头,添加新头,移除现有头,更新头字段,然后再将头内容写回到消息中。 或者,您也可以创建一个空 MQHeaderList,然后使用头实例进行填充,并一次或重复多次将其写入到消息中。
提供了对以下常用 IBM MQ 头的支持
- MQRFH - 规则和格式化头
- MQRFH2 -类似于 MQRFH ,用于向属于 IBM Integration Bus的消息代理传递消息。 同时还用于包含消息属性
- MQCIH- CICS® 网桥
- MQDLH - 死信头
- MQIIH- IMS 信息头
- MQRMH - 参考消息头
- MQSAPH - SAP 头
- MQWIH - 工作信息头
- MQXQH - 传输队列头
- MQDH - 分发头
- MQEPH - 已封装的 PCF 头
要使用 MQHeaderIterator 来获取 RFH2 头,可以在 GetMessageOptions 中设置 MQGMO_PROPERTIES_FORCE_MQRFH2,也可以将队列属性 PROPCTL 设置为 FORCE。