属性名称限制
对属性命名时,必须遵循特定规则。
以下限制适用于属性名称:
- 属性不能以下列字符串开头:
- "JMS"-保留供 IBM® MQ classes for JMS使用。
- "usr.JMS"-无效。
这些同义词允许 MQI 应用程序以类似于 IBM MQ classes for JMS 客户机应用程序的方式访问 JMS 属性。 至于这些属性,只有 JMSCorrelationID、JMSReplyTo、JMSType、JMSXGroupID 以及 JMSXGroupSeq 能够使用 MQI 设置。属性 同义词 JMSCorrelationID Root .MQMD.CorrelId 或 jms.Cid JMSDeliveryMode Root .MQMD.Persistence 或 jms.Dlv JMSDestination jms.Dst JMSExpiration Root .MQMD.Expiry 或 jms.Exp JMSMessageID Root .MQMD.MsgId JMSPriority Root .MQMD.Priority 或 jms.Pri JMSRedelivered Root .MQMD.BackoutCount JMSReplyTo(以 URI 编码的字符串) Root.MQMD.ReplyToQ、Root.MQMD.ReplyToQMgr 或 jms.Rto JMSTimestamp Root.MQMD.PutDate、Root.MQMD.PutTime 或 jms.Tms JMSType mcd.Type、mcd.Set 或 mcd.Fmt JMSXAppID Root.MQMD.PutApplName JMSXDeliveryCount Root .MQMD.BackoutCount JMSXGroupID Root.MQMD.GroupId 或 jms.Gid JMSXGroupSeq Root.MQMD.MsgSeqNumber 或 jms.Seq JMSXUserID Root.MQMD.UserIdentifier 请注意, IBM MQ classes for JMS 中提供的 JMS_IBM_ * 属性不可使用 MQI。 MQI 应用程序可以通过其他方式访问 JMS_IBM_* 属性引用的字段。
- 不能调用的属性(大小写任意混合)包括“NULL”、“TRUE”、“FALSE”、“NOT”、“AND”、“OR”、“BETWEEN”、“LIKE”、“IN”、“IS”和“ESCAPE”。 这些是选择字符串中使用的 SQL 关键字的名称。
- 以“mq”(大小写任意混合)开头但不是“mq_usr”开头的属性名称只能包含一个“.” 字符 (U+002E)。 具有这些前缀的属性中 不允许使用多个“.”字符。
- 两个“.” 字符之间必须包含其他字符;层次结构中不能有空白点。 同样,属性名称不能以“.” 字符。
- 如果应用程序设置了属性“a.b”,然后设置了属性“a.b.c”,那么层次结构“b”中包含值还是包含另一个逻辑组并不明确。 这种层次结构为“混合内容”,不受支持。 不允许设置会产生混合内容的属性。
如下所示,这些限制由验证机制强行执行:
- 如果在创建消息句柄时请求了验证,那么使用 MQSETMP-Set message property 调用设置属性时将验证属性名称。 如果尝试验证属性时因为属性名称规范中的错误而失败,完成代码为 MQCC_FAILED,原因码如下:
- MQRC_PROPERTY_NAME_ERROR 代表原因 1-4。
- MQRC_MIXED_CONTENT_NOT_ALLOWED 代表原因 5。
- 直接指定为 MQRFH2 元素的属性名称不能保证会由 MQPUT 调用进行验证。