【问题标题】:RFH2 - What is the format of the header?RFH2 - 标头的格式是什么?
【发布时间】:2020-08-03 02:02:54
【问题描述】:

我尝试构建一个xml 消息以将其注入 IBM MQ。

要使用的格式应该是RFH2。你知道吗,你有关于标题格式(xsd?)的文档吗?

谢谢。

【问题讨论】:

  • IBM MQ 消息由 MQ 标头和 MQ 有效负载组成。有效负载部分可以具有任何类型的格式,例如 JSON 或 XML。 RH2 是 MQ 标头的一部分,是一种元数据。请提供更多信息,说明为什么在您的场景中使用 RFH2,否则您可以将消息推送到 IBM MQ 队列对象。
  • 这能回答你的问题吗? How to send message with RFH2 format?

标签: ibm-mq rfh2


【解决方案1】:

MQ 的 RFH2 是一个可扩展的标头,它由一个固定格式的二进制结构和一个具有类似 XML 语法的可变部分组成。

这里的知识中心描述了结构(基本术语):

https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.ref.dev.doc/q099070_.htm

一些 MQ 客户端(例如 JMS 和 .NET)会自动在它们发送的消息前加上 RFH2 标头。如果您使用这些客户端之一,那么您可能不需要自己编码 RFH2 - 它将为您添加。

您是否有更多关于为什么应用程序需要 RFH2 标头的信息? RFH2 通常用于携带消息属性,因此如果您要构建自己的 RFH2,则需要确保正确编码这些属性。

如果应用程序正在使用 MQ JMS 或 .NET 客户端,那么它将期望消息中的 RFH2 标头按照以下主题中所述进行格式化:

https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.dev.doc/q032000_.htm

您可能会发现以下实用程序 (rfhutil) 有助于理解 RFH2 标头和调试您的应用程序:

https://github.com/ibm-messaging/mq-rfhutil

请注意,RFH2 标头的可变部分使用类似 XML 的语法,但不支持或理解 XML 的所有功能,因此您不应尝试将 XML 有效负载包含在 RFH2 标头的可变部分中。 .. 相反,XML 文档应遵循消息中的 RFH2。

最后要注意的一点是,MQ 可以根据消息的格式和 CCSID 执行代码页转换,但这很少是您想要的 XML 文档(通常描述文档的字符编码它自己的声明,如这个:<?xml version="1.0" encoding="UTF-8" standalone="no" ?>。因此,我建议您将 RFH2 中的 Format 字段设置为“MQFMT_NONE”,以便在 MQ 客户端接收到消息时将 XML 文档视为二进制数据,并且不会进行不必要的转换。

【讨论】:

  • 非常感谢您提供这个非常详细和有用的答案!要回答您的问题,不,我不知道为什么应用程序需要 RFH2 标头。负责应用程序的人告诉我“注入消息,使用 RFH2 格式。”。我需要提供的信息是format(8 个空格)、mcdjmsusr。所以,如果我想注入一条消息(使用 JMeter),可以给我看一个 xml 消息的例子吗?像<header>... </header><document>...</document> 这样的东西?非常感谢。
猜你喜欢
  • 2020-08-04
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
相关资源
最近更新 更多