JMS 消息对象属性

前缀为 JMS_IBM_MQMD 的消息对象属性允许您设置或读取相应的 MQMD 字段。

发送消息

表示除 StrucId 和 Version 之外的所有 MQMD 字段。 这些属性仅仅是指 MQMD 字段;属性同时出现在 MQMD 和 MQRFH2 头中,不会设置或抽取 MQRFH2 中的版本。

除了 JMS_IBM_MQMD_BackoutCount 之外,以上任意属性都可以设置。 将忽略对 JMS_IBM_MQMD_BackoutCount 设置的任何值。

如果属性具有最大长度限制,而您提供的值过长,则该值会被截断。

对于某些属性,您还必须在 Destination 对象上设置 WMQ_MQMD_MESSAGE_CONTEXT 属性。 应用程序必须以相应的上下文权限运行才能使属性生效。 如果您不将 WMQ_MQMD_MESSAGE_CONTEXT 设置为相应的值,将忽略此属性。 如果您将 WMQ_MQMD_MESSAGE_CONTEXT 设置为相应的值,但是您没有队列管理器的足够上下文权限,系统将发出 JMSException 异常。 以下是需要 WMQ_MQMD_MESSAGE_CONTEXT 的特定值的属性。

以下属性要求 WMQ_MQMD_MESSAGE_CONTEXT 设置为 WMQ_MDCTX_SET_IDENTITY_CONTEXT 或 WMQ_MDCTX_SET_ALL_CONTEXT:
  • JMS_IBM_MQMD_UserIdentifier
  • JMS_IBM_MQMD_AccountingToken
  • JMS_IBM_MQMD_ApplIdentityData
以下属性要求 WMQ_MQMD_MESSAGE_CONTEXT 设置为 WMQ_MDCTX_SET_ALL_CONTEXT:
  • JMS_IBM_MQMD_PutApplType
  • JMS_IBM_MQMD_PutApplName
  • JMS_IBM_MQMD_PutDate
  • JMS_IBM_MQMD_PutTime
  • JMS_IBM_MQMD_ApplOriginData

接收消息

如果 WMQ_MQMD_READ_ENABLED 属性设置为 true,那么无论生成应用程序已设置的实际属性是什么,以上所有属性都可用于收到的消息。 除非根据 JMS 规范先清除所有属性,否则应用程序无法修改接收到的消息的属性。 可以在不修改属性的情况下转发已接收的消息。
注意: 如果应用程序从 WMQ_MQMD_READ_ENABLED 属性设置为 true 的目标接收消息,并将其转发到 WMQ_MQMD_WRITE_ENABLED 设置为 true 的目标,那么这会导致将接收到的消息的所有 MQMD 字段值复制到转发的消息中。

属性表

下表列出了表示 MQMD 字段的 Message 对象的属性。 请参见链接以获取这些字段及其允许值的完整描述。
表 1. 属性名称、描述和类型
属性 描述 Java 类型 完整描述的链接
JMS_IBM_MQMD_Report 报告消息的选项 整数 报告
JMS_IBM_MQMD_MsgType 消息类型 整数 MsgType
JMS_IBM_MQMD_Expiry 消息生命周期 整数 到期
JMS_IBM_MQMD_Feedback 反馈或原因码 整数 FEEDBACK
JMS_IBM_MQMD_Encoding 消息数据的数字编码 整数 编码
JMS_IBM_MQMD_CodedCharSetId 消息数据的字符集标识 整数 CodedCharSetId
JMS_IBM_MQMD_Format 消息数据的格式名称 字符串 FORMAT
JMS_IBM_MQMD_Priority 1 消息优先级 整数 优先权
JMS_IBM_MQMD_Persistence 消息持久性 整数 PERSISTENCE
JMS_IBM_MQMD_MsgId 2 消息标识 对象 (byte []) 4 MsgId
JMS_IBM_MQMD_CorrelId 3 相关标识 对象 (byte []) 4 CorrelId
JMS_IBM_MQMD_BackoutCount 回退计数器 整数 BackoutCount
JMS_IBM_MQMD_ReplyToQ 应答队列的名称 字符串 ReplyToQ
JMS_IBM_MQMD_ReplyToQMgr 应答队列管理器的名称 字符串 ReplyToQMgr
JMS_IBM_MQMD_UserIdentifier 用户标识 字符串 UserIdentifier
JMS_IBM_MQMD_AccountingToken 记帐标记 对象 (byte []) 4 AccountingToken
JMS_IBM_MQMD_ApplIdentityData 与身份有关的应用程序数据 字符串 ApplIdentityData
JMS_IBM_MQMD_PutApplType 放置消息的应用程序的类型 整数 PutApplType
JMS_IBM_MQMD_PutApplName 放置消息的应用程序的名称 字符串 PutApplName
JMS_IBM_MQMD_PutDate 消息的放置日期 字符串 PutDate
JMS_IBM_MQMD_PutTime 消息放置的时间 字符串 PutTime
JMS_IBM_MQMD_ApplOriginData 与源有关的应用程序数据 字符串 ApplOriginData
JMS_IBM_MQMD_GroupId 组标识 对象 (byte []) 4 GroupId
JMS_IBM_MQMD_MsgSeqNumber 组内逻辑消息的序列号 整数 MsgSeqNumber
JMS_IBM_MQMD_Offset 从逻辑消息开始的物理消息数据偏移量 整数 偏移量
JMS_IBM_MQMD_MsgFlags 消息标志 整数 MsgFlags
JMS_IBM_MQMD_OriginalLength 原始消息的长度 整数 OriginalLength
  1. 注意: 如果对 JMS_IBM_MQMD_Priority 指定的值不在范围 0-9 内,那么这将违反 JMS 规范。
  2. 注意: JMS 规范声明消息标识必须由 JMS 提供程序设置,并且必须唯一或为空。 如果您为 JMS_IBM_MQMD_MsgId 指定值,此值将复制到 JMSMessageID。 因此,它不是由 JMS 提供程序设置的,并且可能不是唯一的: 这违反了 JMS 规范。
  3. 注意: 如果您JMS_IBM_MQMD_CorrelId 分配的值以字符串“ID:”开头,则违反了 JMS 规范。
  4. 注意: 对消息使用字节数组属性违反 JMS 规范。