将消息头字段和属性映射至 IBM MQ 格式以及从此格式映射至消息头字段和属性

服务集成将消息转换为 IBM MQ 格式时,它根据服务集成消息头字段和属性设置 MQMD 和 MQRFH2 中的字段(包括适用于消息的 JMS 消息头字段和属性)。服务集成转换 IBM MQ 格式的消息时,它将根据 IBM MQ 消息中的 MQMD 和 MQRFH2 设置服务集成消息头字段和属性。

通过服务集成和 IBM MQ 在 JMS 程序之间交换消息

一般来说,不必知道消息格式之间的转换就可以在服务集成与 IBM MQ 之间交换 JMS 消息,原因是服务集成会自动执行适当转换,包括字符和数字编码。但是,如果 JMS 应用程序未按预期运行,或者服务集成配置包括用于处理到达或来自非 JMS IBM MQ 程序的消息的 JMS 程序或调解,那么您可能必须了解消息转换。

如果服务集成应用程序与 IBM MQ 应用程序交换 MapMessage 对象,那么可能必须指定非缺省映射消息编码格式。

IBM MQ 消息属性:MQMD 和 MQRFH2

WebSphere MQ 消息包含消息描述符 (MQMD) 和规则及格式化头 2 (MQRFH2) 中的消息属性。IBM MQ 消息始终包括 MQMD,但 MQRFH2 是可选的,原因是某些 WebSphere MQ 应用程序不能处理包含 MQRFH2 的消息。为简化互操作,可配置服务集成以对不能处理 MQRFH2 的应用程序省略消息中的 MQRFH2。服务集成省略 MQRFH2 时,它会废弃相应的服务集成头字段和属性。
注: 少量 MQRFH2 信息也会存储在 MQMD 字段中。但是,这些 MQMD 字段并非完全相等,它们更通用,不能依赖它们来完全替代 MQRFH2 信息。因此,如果接收应用程序可接受 MQRFH2 头,那么应始终提供一个 MQRFH2 头。

同样,服务集成可能从生成不带 MQRFH2 的消息的 IBM MQ 应用程序接收消息。服务集成接收不带 MQRFH2 的消息时,它会尽量从 MQMD 获取信息并对其他字段使用缺省值来创建“最佳推测”服务集成头。

有关消息描述符和消息头的内容的详细信息,请参阅 IBM MQ 应用程序编程参考。有关 IBM MQ JMS 支持的详细信息(包括有关 IBM MQ 如何在 MQMD 和 MQRFH2 中存储 JMS 消息属性和头字段的详细信息),请参阅 IBM MQ

IBM MQ 消息属性:JMS 头字段

下表显示将消息转换为 IBM MQ 格式以及转换该格式的消息时服务集成如何在 MQMD 和 MQRFH2 字段之间映射 JMS 头字段。

该表将 MQRFH2 字段显示为 folder.field,其中 folder 是包含该字段的 MQRFH2 文件夹的名称,field 是该字段在 MQRFH2 文件夹中的名称。

对于一些 JMS 头字段,同时存在 MQMD 字段和 MQRFH2 字段。服务集成将消息转换为 IBM MQ 格式时,它会设置 MQMD 和 MQRFH2 字段。服务集成转换 IBM MQ 格式的消息时,它将根据 MQRFH2 字段(如果可用)设置 JMS 头字段,否则根据 MQMD 字段设置 JMS 头字段。

表 1. JMS、MQMD 和 MQRFH2 头字段. 此表的第一列列示 JMS 头字段,第二列显示与第一列中的 JMS 头字段相关的 MQMD 字段。第三列显示与第一列中的 JMS 头字段相关的 MQRFH2 字段。第四列根据需要提供指向该表后面的脚注的链接。
JMS 头字段 MQMD 字段 MQRFH2 字段 注意
JMSCorrelationID CorrelId jms.Cid 请参阅注释 1
JMSDeliveryMode Persistence jms.Dlv 请参阅注释 15
JMSDestination   jms.Dst 请参阅注释 16
JMSExpiration Expiry jms.Exp  
JMSMessageID MsgId    
JMSPriority Priority   请参阅注释 2
JMSRedelivered BackoutCount   请参阅注释 3
JMSReplyTo ReplyToQReplyToQMgr jms.Rto 请参阅注释 16
JMSTimestamp PutDatePutTime jms.Tms  
JMSType   mcd.Type  
注释 1: MQMD CorrelId 字段可保存最长 48 个十六进制数字(24 字节)的标准 IBM MQ 相关标识。JMSCorrelationID 可以是 byte[] 值,即,包含十六进制字符并且前缀为 "ID:" 的字符串值,或者未以 "ID:" 开头的任意字符串值。它们中的前两项表示标准 IBM MQ 相关标识,并且直接与 MQMD CorrelId 字段(适当时截断或填充零)形成映射;它们不使用 MQRFH2 jms.Cid 字段。第三项(任意字符串)使用 MQRFH2 jms.Cid 字段;字符串的前 24 字节为 UTF-8 格式,将写至 MQMD CorrelID
注释 2: IBM MQJMSPriority 值存储在 MQRFH2 jms.Pri 字段中,但不使用已在该字段中的任何值。服务集成不会检查或设置 MQRFH2 jms.Pri 字段。
注释 3: 服务集成根据 MQMD 的 BackoutCount 字段为它从 IBM MQ 接收的消息设置 JMSRedelivered 指示符;非零 BackoutCount 值指示先前接收消息的操作已回滚。

IBM MQ 消息属性:JMS 定义的属性

下表显示将消息转换为 IBM MQ 格式以及转换该格式的消息时服务集成如何在 JMS 定义的属性与 MQMD 和 MQRFH2 字段之间进行映射。

该表将 MQRFH2 字段显示为 folder.field,其中 folder 是包含该字段的 MQRFH2 文件夹的名称,field 是该字段在 MQRFH2 文件夹中的名称。

对于一些 JMS 定义的属性,同时存在 MQMD 字段和 MQRFH2 字段。服务集成将消息转换为 IBM MQ 格式时,它会设置 MQMD 和 MQRFH2 字段。服务集成转换 IBM MQ 格式的消息时,它将根据 MQRFH2 字段(如果可用)设置 JMS 定义的属性,否则根据 MQMD 字段进行设置。

表 2. JMS 属性以及 MQMD 和 MQRFH2 字段. 此表的第一列列示 JMS 定义的属性,第二列显示与第一列中 JMS 定义的属性相关的 MQMD 字段。第三列显示与第一列中 JMS 定义的属性相关的 MQRFH2 字段。第四列根据需要提供指向该表后面的脚注的链接。
JMS 定义的属性 MQMD 字段 MQRFH2 字段 注意
JMSXAppID PutApplName    
JMSXDeliveryCount BackoutCount    
JMSXGroupID GroupId jms.Gid 请参阅注释 4 和注释 5
JMSXGroupSeq MsgSeqNumber jms.Seq  
JMSXUserID UserIdentifier    
注释 4: MQMD GroupId 字段可保存最长 48 个十六进制数字(24 字节)的标准 IBM MQ GroupIdJMSXGroupID 是包含十六进制字符并且前缀为 "ID:" 的字符串值,或者未以 "ID:" 开头的任意字符串值。它们中的第一项表示标准 IBM MQ GroupId 并且直接与 MQMD GroupId 字段(适当时截断或填充零)形成映射。第二项(任意字符串)使用 MQRFH2 jms.Cid 字段;字符串的前 24 字节为 UTF-8 格式,将写至 MQMD GroupId
注释 5: 服务集成将消息转换为 IBM MQ 格式时,如果已设置 JMSXGroupID,那么服务集成还会在 MQMD 的 MsgFlags 字段中设置 MQMF_MSG_IN_GROUP 标志。请注意,发送组消息时,发送 JMS 应用程序必须确保已根据需要设置 MQMF_LAST_MSG_IN_GROUP 标志(请参阅IBM MQ 消息属性:特定于 JMS 提供程序的属性)。

IBM MQ 消息属性:特定于 JMS 提供程序的属性

下表显示将消息转换为 WebSphere MQ 格式以及转换 WebSphere MQ 格式的消息时服务集成如何在特定于 JMS 提供程序的属性与 MQMD 和 MQRFH2 字段之间形成映射。通常,您使用这些属性来满足接收应用程序中的特殊要求,所以应咨询接收应用程序的开发者或管理员以了解有关必需属性值的详细信息。

表 3. 特定于 JSM 提供程序的属性以及 MQMD 和 MQRFH2 字段. 此表的第一列列示特定于 JMS 提供程序的属性,第二列显示与第一列中特定于 JMS 提供程序的属性相关的 MQMD 字段。第三列显示与第一列中特定于 JMS 提供程序的属性相关的 MQRFH2 字段。第四列根据需要提供指向该表后面的脚注的链接。
特定于 JMS 提供程序的属性 MQMD 字段 MQRFH2 字段 注意
JMS_IBM_ArmCorrelator   mqext.Arm 请参阅注释 6
JMS_IBM_Character_Set CodedCharacterSetId CodedCharacterSetId 请参阅注释 7
JMS_IBM_Encoding 编码 编码 请参阅注释 7
JMS_IBM_Feedback 反馈    
JMS_IBM_Format 格式 格式 请参阅注释 7
JMS_IBM_Last_Msg_In_Group MQMF_LAST_MSG_IN_GROUP   请参阅注释 8
JMS_IBM_MQMD_CorrelId CorrelId   请参阅注释 9 和注释 10
JMS_IBM_MQMD_MsgId MsgId   请参阅注释 9 和注释 11
JMS_IBM_MQMD_Persistence Persistence   请参阅注释 9、注释 12 和注释 15
JMS_IBM_MQMD_ReplyToQ ReplyToQ   请参阅注释 9、注释 13 和注释 16
JMS_IBM_MQMD_ReplyToQMgr ReplyToQMgr   请参阅注释 9、注释 13 和注释 16
JMS_IBM_MsgType MsgType    
JMS_IBM_PutDate PutDate    
JMS_IBM_PutTime PutTime    
JMS_IBM_Report_* Report   请参阅注释 14
JMS_IBM_RMCorrelator   mqext.Wrm  
JMS_TOG_ARM_Correlator   mqext.Arm 请参阅注释 6
注释 6: 应对 ARM 相关因子使用名称 JMS_TOG_ARM_Correlator。名称 JMS_IBM_ArmCorrelator 可用于实现与某些现有 JMS 程序的兼容性。
注释 7: JMS_IBM_Character_SetJMS_IBM_EncodingJMS_IBM_Format 属性包含有关 IBM MQ 消息有效内容的信息;即,跟在 MQRFH2(如果存在)之后的 IBM MQ 消息部分,如果没有 MQRFH2,则是完整 IBM MQ 消息(排除 MQMD)。有关这些属性及其用法的更多信息,请参阅将消息体映射至 IBM MQ 格式以及从此格式映射消息体
注释 8: MQMF_LAST_MSG_IN_GROUP 是 MQMD 的 MsgFlags 字段中的标志之一。
注释 9: JMS_IBM_MQMD_CorrelIdJMS_IBM_MQMD_MsgIdJMS_IBM_MQMD_PersistenceJMS_IBM_MQMD_ReplyToQJMS_IBM_MQMD_ReplyToQMgr 属性允许 JMS 应用程序覆盖 IBM MQ MQMD 字段的服务集成缺省处理。服务集成将消息转换为 IBM MQ 格式期间,仅当每个属性已由应用程序显式设置(使用 setObjectProperty()setNonNullProperty())时,服务集成才会为其设置对应 MQMD 字段。

服务集成转换 IBM MQ 格式的消息时,它会根据对应 MQMD 字段设置每个属性。

注释 10: JMS_IBM_MQMD_CorrelId 属性会覆盖 JMSCorrelationID 属性的缺省处理。服务集成将消息转换为 IBM MQ 格式时,那么不管 JMSCorrelationID 属性的值(如果存在)如何,服务集成都会将 MQMD CorrelId 字段设置为 JMS_IBM_MQMD_CorrelId 属性的值 (byte[]),只要已显式设置此值。设置 JMS_IBM_MQMD_CorrelId 属性不会影响 MQRFH2 jms.Cid 字段的值。

服务集成转换 IBM MQ 格式的消息时,不管 MQRFH2 jms.Cid 字段的值(如果存在)如何,服务集成都会将 JMS_IBM_MQMD_CorrelId 属性设置为 MQMD CorrelId 字段的值 (byte[])。

注释 11: JMS_IBM_MQMD_MsgId 属性会覆盖 JMSMessageID 属性的 JMS 缺省处理。服务集成将消息转换为 IBM MQ 格式时,服务集成会检查是否显式设置了 JMS_IBM_MQMD_MsgId 属性。这样一来,服务集成会将 MQMD MsgId 字段设置为此值 (byte[]),并替换 JMS 分配给消息的 JMSMessageID 的唯一值。

服务集成转换 IBM MQ 格式的消息时,服务集成将 JMS_IBM_MQMD_MsgId 属性设置为 MQMD MsgId 字段的值 (byte[])。

注释 12: JMS_IBM_MQMD_Persistence 属性会覆盖 JMSDeliveryMode 属性的缺省处理。服务集成将消息转换为 IBM MQ 格式时,那么不管 JMSDeliveryMode 属性的值(如果存在)如何,服务集成都会将 MQMD Persistence 字段设置为 JMS_IBM_MQMD_Persistence 属性的值(整数),只要已显式设置此值。设置 JMS_IBM_MQMD_Persistence 属性不会影响 MQRFH2 jms.Dlv 字段的值。

服务集成转换 IBM MQ 格式的消息时,不管 MQRFH2 jms.Dlv 字段的值(如果存在)如何,服务集成都会将 JMS_IBM_MQMD_Persistence 属性设置为 MQMD Persistence 字段的值(整数)。

注释 13: JMS_IBM_MQMD_ReplyToQJMS_IBM_MQMD_ReplyToQMgr 属性会覆盖 JMSReplyTo 属性的缺省处理。服务集成将消息转换为 IBM MQ 格式时,不管 JMSReplyTo 属性的值(如果存在)如何,服务集成都会将 MQMD ReplyToQ 字段设置为 JMS_IBM_MQMD_ReplyToQ 属性的值(字符串),只要已显式设置该值;并将 MQMD ReplyToQMgr 字段设置为 JMS_IBM_MQMD_ReplyToQMgr 属性的值(字符串),只要已显式设置该值。设置 JMS_IBM_MQMD_ReplyToQJMS_IBM_MQMD_ReplyToQMgr 字段不会影响 MQRFH2 jms.Rto 字段的值。

服务集成转换 IBM MQ 格式的消息时,不管 MQRFH2 jms.Rto 字段的值(如果存在)如何,服务集成都会将 JMS_IBM_MQMD_ReplyToQJMS_IBM_MQMD_ReplyToQMgr 属性设置为 MQMD ReplyToQReplyToQMgr 字段的值(字符串)。

注释 14: 要获取 JMS_IBM_Report_* 属性列表,请参阅将 MQMD 报告字段映射至特定于 JMS 提供程序的属性
注释 16: 有关更多信息,请参阅至和自 IBM MQ 队列、主题和目标的目标映射

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjc0007_
文件名:rjc0007_.html