JMS 消息映射到 IBM MQ 消息

IBM® MQ 消息由消息描述符,可选的 MQRFH2 头和主体组成。 JMS 邮件的内容部分映射并部分复制到 IBM MQ 邮件中。

本主题描述如何将本节第一部分中描述的 JMS 消息结构映射到 IBM MQ 消息。 对于希望在 JMS 和传统 IBM MQ 应用程序之间传输消息的程序员来说,这是有兴趣的。 想要处理在两个 JMS 应用程序之间传输的消息 (例如,在 IBM Integration Bus 实现中) 的人员也很感兴趣。

如果应用程序使用代理程序的实时连接,那么本部分内容不适用。 当应用程序使用实时连接时,将直接通过TCP/IP执行所有通信; 不涉及任何 IBM MQ 队列或消息。

IBM MQ 消息由三个组件组成:
  • IBM MQ 消息描述符 (MQMD)
  • IBM MQ MQRFH2 头
  • 消息体。

MQRFH2 是可选的,其包含在外发消息中由 JMS Destination 类中的 TARGCLIENT 标志控制。 您可以使用 IBM MQ JMS 管理工具来设置此标志。 由于 MQRFH2 包含特定于 JMS的信息,因此当发送方知道接收目标是 JMS 应用程序时,请始终将其包含在消息中。 通常,将消息直接发送到非JMS 应用程序时,请省略 MQRFH2 。 这是因为此类应用程序在其 IBM MQ 消息中不需要 MQRFH2 。

如果入局消息无 MQRFH2 头,那么缺省情况下从消息的 JMSReplyTo 头字段衍生的“队列”或“主题”对象会设置此标志,从而使发送至队列或主题的应答消息同样不包含 MQRFH2 头。 只有在原始消息具有 MQRFH2 头时,才能切换应答消息中包含 MQRFH2 头的行为,方式是将连接工厂的 TARGCLIENTMATCHING 属性设置为 NO。

图 1 显示了如何将 JMS 消息的结构转换为 IBM MQ 消息并重新返回:
图 1。 如何使用 MQRFH2 头在 JMSIBM MQ 之间变换消息
此图显示在使用 MQRFH2 头时如何将 JMS 中的消息部分映射并部分复制到 IBM MQ 消息。 它还显示从 IBM MQ 消息到 JMS 消息的变换。 变换的详细信息在图后的文本中。
结构转换方式有两种:
映射
如果 MQMD 包含等同于 JMS 字段的字段,那么 JMS 字段将映射到 MQMD 字段。 其他 MQMD 字段显示为 JMS 属性,因为 JMS 应用程序在与非JMS 应用程序通信时可能需要获取或设置这些字段。
复制
如果没有等效的 MQMD ,那么会将 JMS 头字段或属性作为 MQRFH2中的字段传递 (可能已变换)。