MQMD 是每个消息都带有的消息头信息, 它由若干字段组成, 这些字段都是 MQ 设
计人员根据总结的应用需求而设置的。 应用程序构建消息时应该对这些字段填入
恰当的值,对于没有填入的字段, MQ会用默认值填充。开发应用程序时,充分
理 解并利用这些字段是十分必要的,这里逐一为大家进行介绍,并针对每个字
段指明它在实际编程中一般会用来实现什么样的功能:
StrucId :消息头结构名,固定为 "MQMD"四个字符。根据这个字段,我们就能够
在应用程序数据包中识别出 MQMD的位置。
Version :MQMD 版本号。
Report :消息的报告选项, 默认值为 MQRO_NONE。发送方程序通过设置此字段值
以指定在消息传递出现意外、 消息超时、 消息到达、 消息递出事件时是否需要报
告消息和报告消息要包含什么内 容。对于需要消息报告的程序,需要对这个字
段与下面介绍的 ReplyToQ 和 ReplyToQMgr 字段一起进行设置,以对这些消息
事件作出反应。
Expiry :超时字段, 单位是 0.1 秒,默认值是 MQEI_UNLIMITED,表示永不过期。
消息放到目标队列里以后,如果超过这个指定时间还没有被程序读走, MQ 系统
就会丢弃这个消息。 如果这个消息设置了 Report 字段要求超时报告, 系统会按
照 Report 字段指定的方式返回一个超时报告。应用中通常要进行必要的消息超
时机制设计,比如实现 SOA框架下为保持交易一 致性而广泛使用的
Compensation 机制,就可以用超时处理实现。
Feedback:反馈字段,此字段与 Report 字段一起使用以指示报告的性质。
Encoding :消息中数值数据( binary integer 、packed-decimal integers 、
floating-point numbers 等)的编码方式,默认值是 MQENC_NATIVE,因平台而
异,此值不适用于 MQMD 结构本身的数字数据。实际应用中,为减少复杂性,要
尽量少使用二进制的数值数据,这时就不必考虑此字段。
CodedCharSetId :指定消息使用的字符集编码的 CCSID,默认值是
MQCCSI_Q_MGR,随平台不同而不同。 MQ 在需要转码时根据这个字段的值来识别
消息内容的编码方式,在主机上一般使用包含 GBK 字符集的 CCSID1388,对应
的 UNIX 和 WINDOWS 系统下的 CCSID 是 1386 。
Format:给出描述消息体所符合的数据格式名称, 格式名可以自己定义, 默认值
是 MQFMT_NONE。应用程序可以使用这个字段来指定发送消息的格式名,接收方
根据这个名字对消息体做出不同解释。
Priority :消息的优先级,最低优先级是 0,默认值是 MQPRI_PRIORITY_AS_Q_DEF。
Persistence :消息持久性值, 默认值为 MQPER_PERSISTENCE_AS_Q_DEF。如果消
息是持久的,所有操作会记入 MQ LOG;如果消息不是持久的则不记 LOG,MQ 系
统中断或重启意味着还没被处理的消息将丢失。 应用程序设计时要对是否使用持