消息树结构

消息树是逻辑消息树的组成部分,集成节点将消息体的内部表示存储在其中。

消息树的根称为 Root。 消息树始终存在,并且在消息流的单个实例中从一个节点传递到另一个节点。

消息树包括在消息中显示的所有头(除消息体外)。 如果由解析器创建,此树还将包含 Properties 子树。 如果提供的解析器已经创建了消息树,表示 Properties 子树的元素后面不跟头或跟多个头。

如果已通过 IBM® MQ Enterprise TransportIBM MQ Mobile Transport接收到消息,那么第一个头 (第二个元素) 必须是 MQMD。 消息中包含的其他头在树中出现的顺序与在消息中出现的顺序相同。 Properties 树的根下面的最后一个元素总是消息体。

如果用户定义的解析器已经创建了消息树,那么 Properties 树(如果存在)后面跟消息体。

以下部分中显示了消息树结构。 如果输入消息不是 IBM MQ 消息,那么显示的头可能不存在。 如果创建此树的解析器是用户定义的解析器,可能没有 Properties 树。

由输入节点和解析器为通过使用 WebSphere MQ的传输接收的消息创建的消息树结构。

Body 树是子元素的结构,该结构表示消息内容(数据)并反映该内容的逻辑结构。 Body 树由主体解析器(程序提供的解析器或用户定义的解析器)创建。

已解析的树的每个元素是以下三种类型之一:

名称元素
名称元素具有一个与其关联的字符串,该字符串是元素的名称。 XMLElement 是名称元素的一个示例。 名称元素还具有另一个与其关联的字符串,此字符串是元素的名称;此字符串可能为空。
值元素
值元素有一个与其关联的值。 XMLContent 是值元素的一个示例。
名称/值元素
名称/值元素是名称元素中只包含一个值元素而不包含其他任何元素情况下的优化。 该元素同时包含名称和值。 XMLAttribute 是名称/值元素的一个示例。

属性文件夹

属性文件夹是消息树的第一个元素,保存有关消息特性的信息。

Properties 文件夹的根名为 Properties。 它是根下的第一个元素。 由内建解析器生成的所有消息树都包含消息的属性文件夹。 如果您创建自己的用户定义解析器,可以选择解析器是否创建属性文件夹。 但是,为了保持一致性,您应该在用户定义的解析器中包含此操作。

Properties 文件夹包含一组标准属性,您可以在消息流节点中用与任何其他属性相同的方法来操作这些属性。 其中一些字段映射到受支持的 IBM MQ 头中的字段 (如果存在) ,并在将消息从一个节点传递到另一个节点时传递到相应的解析器。

例如,MQRFH2 头包含有关消息模型、消息名称和消息物理格式的信息。 这些值作为 MessageSet、MessageType 和 MessageFormat 存储在属性文件夹中。 要在消息处理节点中使用 ESQL 或 Java™ 来访问这些值,请在 "属性" 文件夹中引用这些值; 请勿直接引用从中派生这些值的头中的字段。

属性解析器确保在输入到每个节点以及从每个节点输出时,头字段中的值与属性文件夹中的值匹配。 对于任何字段,如果只有一个头更改(属性头或特定消息头),将使用此值。 如果属性头和特定消息头均已更改,将使用属性文件夹中的值。

消息流处理完成后,将废弃属性文件夹。