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 对象的属性。 请参见链接以获取这些字段及其允许值的完整描述。| 属性 | 描述 | 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 |
- 注意: 如果对 JMS_IBM_MQMD_Priority 指定的值不在范围 0-9 内,那么这将违反 JMS 规范。
- 注意: JMS 规范声明消息标识必须由 JMS 提供程序设置,并且必须唯一或为空。 如果您为 JMS_IBM_MQMD_MsgId 指定值,此值将复制到 JMSMessageID。 因此,它不是由 JMS 提供程序设置的,并且可能不是唯一的: 这违反了 JMS 规范。
- 注意: 如果您JMS_IBM_MQMD_CorrelId 分配的值以字符串“ID:”开头,则违反了 JMS 规范。
- 注意: 对消息使用字节数组属性违反 JMS 规范。