该消息树是逻辑消息树的一部分,代理将以内部形式表示的消息体存储在其中。
消息树的根称为 Root。消息树总是会出现,并且将它在消息流的单个实例中从一个节点传递到另一个节点。
消息树包括在消息中显示的所有头(除消息体外)。它还包括属性子树(在解析器中描述),如果由解析器创建。如果提供的解析器已经创建了消息树,则表示属性子 树的元素后面不跟头或跟多个头。
如果已跨 WebSphere MQ 企业传输方式、WebSphere MQ 移动传输方式 或 WebSphere MQ 遥感传输方式 收到了消息,则第一个头(第二个元素)必须为 MQMD。消息中包含的任何其他头都以和在消息中相同的顺序显示在树中。消息树的根下面的最后一个元素总是消息体。
如果用户定义的解析器已经创建了消息树,则属性树(如果存在)后面跟消息体。
在下面显示了消息树结构。如果输入消息不是 WebSphere MQ 消息,则所显示的头可能不存在。如果创建此树的解析器是用户定义的解析器,则属性树可能不存在。
主体树是表示元素内容(数据)并反映该内容的逻辑结构的子元素的结构,下面会对这些子元素进行描述。主体树由解析器(提供的解析器或用户定义的解析器)创建,如解析器中所述。
已解析的树内每个元素都是以下三种类型元素中的一种:
有关如何植入消息树的信息,请参阅如何填充消息树。
属性文件夹是消息树的第一个元素,它保留关于消息特性的信息。
属性文件夹的根称为 Properties。它是根下的第一个元素。由内置解析器生成的所有消息树都包含消息的属性文件夹。如果您创建自己的用户定义的解析器,可以选择解析器是否创建属性文件夹。但是,为了保持一致性,建议您在用户定义的解析器中包含此操作。
属性文件夹被创建并插入到在树中所有头之后,但在消息数据之前。它包含一组标准属性,您可以在消息流节点中用与任何其他属性相同的方法来处理这些属性。当消息从一个节点传递到另一个节点时,这些字段中的大多数都映射到所支持的 WebSphere MQ 头中的字段(如果出现),并传递到相应的解析器。
例如,MQRFH2 头包含有关消息集、类型和格式的信息。这些值作为 MessageSet、MessageType 和 MessageFormat 存储在属性文件夹中。要使用消息处理节点内的 ESQL 访问这些值,请引用属性文件夹中的这些值,而不要直接引用从中派生这些值的头中的字段。
如果消息被转换为位流(例如在输出节点中),则在属性文件夹中单独保留的任何属性(即,不在输出消息的任何头中)都不包括在输出消息的任何部分中。
Properties 解析器确保在输入到每个节点以及从每个节点输出时,头字段中的值与属性文件夹中的值相匹配。在节点的出口,属性解析器使用其当前包含的值来调用每个头解析器。然后,它请求从头解析器返回的值,并更新它自己的值。如果您已对节点中的 ESQL 进行了编码,更新属性文件夹和/或头中的值,则当从该节点传递树时,这些值始终匹配。但是,如果您用不同值更新了属性文件夹和头中的某个字段,您在属性文件夹中设置的值将覆盖在头中设置的值。
当消息流处理完成时,将废弃属性文件夹。