MQGet 节点

本主题包含以下部分:

用途

使用 MQGet 节点可以从使用 WebSphere MQ 企业传输方式 连接到代理的客户机以及使用 MQI 和 AMI 应用程序编程接口的客户机接收消息。MQGet 节点还可以用于检索先前放置在定义为代理队列管理器的 WebSphere MQ 消息队列中的消息。

MQGet 节点从指定的队列读取消息,并为该消息建立处理环境。如果适当,可以将输入队列定义为 WebSphere MQ 集群队列或共享队列。

MQGet 节点可以在消息流中的任何位置使用,不像 MQInput 节点,只能作为消息流的第一个节点使用。从 MQGet 节点输出的输出消息树是通过将输入树和来自 MQGET 调用的结果树结合而构造的。您可以设置 MQGet 节点的属性来控制接收消息的方式。例如,您可以指示在事务控制下处理消息,或者可以要求在结果树创建时,当收到每条输入消息时都执行数据转换。

MQGet 节点处理以下消息域中的消息:

  • MRM
  • XML
  • XMLNS
  • XMLNSC
  • JMSMap
  • JMSStream
  • MIME
  • BLOB
  • IDOC

MQGet 节点在工作台中由以下图标表示:

MQGet 节点图标

在消息流中使用 MQGet 节点

查看以下描述和样本,了解如何在消息流中使用 MQGet 节点:

配置 MQGet 节点

将 MQGet 节点的实例放入消息流中后,可以对其进行配置。

右键单击编辑器视图中的节点,然后单击属性。节点的“基本”属性将显示在属性对话框中。

在属性对话框中,所有必要属性都以星号标记。

通过执行以下操作,配置 MQGet 节点:

  1. 队列名称中输入从中获取消息的队列的名称。必须将此 WebSphere MQ 队列预定义到托管代理的队列管理器,消息流就在部署在该代理上。如果此队列不是有效队列,节点将生成异常,而消息将传播到 failure 终端。
  2. 在属性对话框导航器中选择“缺省”,并设置属性的值(这些属性描述了节点用于确定如何解析入局消息的消息域、消息集、消息类型和消息格式),以及与消息关联的缺省主题。
    • 如果入局消息具有 MQRFH2 头,则不必设置缺省属性的值,因为这些值可以从 MQRFH2 头的 <mcd> 文件夹中获取。例如:
      <mcd><Msd>MRM</Msd><Set>DHM4UO906S001</Set><Type>receiptmsg1</Type>
      <Fmt>XML</Fmt></mcd>

      如果您设置值,且所设置的值与 MQRFH2 头中的那些值不同,则优先使用 MQRFH2 头中的值。

    • 消息域中,从下拉列表中选择正在使用的解析器名称。可以从下列名称中选择:
      • MRM
      • XML
      • XMLNS
      • XMLNSC
      • JMSMap
      • JMSStream
      • MIME
      • BLOB
      • IDOC
    • 如果您使用的是 MRM 或 IDOC 解析器,则从消息集中的下拉列表中选择正确的消息集。

      将 XML、XMLNS、XMLNSC、JMS、MIME 和 BLOB 解析器的消息集保留为空白。

    • 如果您使用的是 MRM 解析器,则从消息类型中的下拉列表中选择正确的消息。此列表是用所选的消息集中定义的消息填充的。

      将 XML、XMLNS、XMLNSC、JMS、IDOC、MIME 和 BLOB 解析器的消息类型保留为空白。

    • 如果您使用的是 MRM 或 IDOC 解析器,则从消息格式中的下拉列表中选择消息的格式。此列表包含您为此消息集定义的所有物理格式。

      将 XML、XMLNS、XMLNSC、JMS、MIME 和 BLOB 解析器的消息格式保留为空白。

  3. 在属性对话框导航器中选择“高级”并为高级属性设置值:
    • 从下拉列表为事务方式选择一个值来定义如何处理此消息的事务特征:
      • 如果选择自动,则消息标记为持久时将在同步点下接收该消息。如果消息未标记为持久,则不在同步点下接收它。输入消息的持久性或非持久性确定输出节点随后传播的任何派生消息的事务性,除非消息流中的输出节点或任何其他后续节点明确覆盖该事务性。
      • 如果选择,则在同步点下接收入局消息。对同一个消息流实例中的输出节点随后传播的任何派生消息都进行事务性发送,除非输出节点或消息流中的任何其他后续节点已明确覆盖了该事务性。
      • 如果选择,则不在同步点下接收入局消息。对同一个消息流实例中的输出节点随后传播的任何派生消息都进行非事务性发送,除非输出节点或消息流中的任何其他后续节点已指定消息必须放置在同步点下。
    • 从下拉列表为生成方式选择一个值来定义在 MQGet 节点内生成哪些输出消息组件,以及从输入消息获取哪些组件。
      • 如果选择,则来自输入树的所有消息组件将以原样进行传播。
      • 如果选择消息,则节点创建新的 Message 组件,但来自输入树的 LocalEnvironment、Environment 和 ExceptionList 组件将以原样进行传播。这是生成方式的缺省值。
      • 如果选择 LocalEnvironment,则节点创建新的 LocalEnvironment 组件,但来自输入树的 Message、Environment 和 ExceptionList 组件将以原样进行传播。
      • 如果选择 Message and LocalEnvironment,则节点创建新的 Message 和 LocalEnvironment 组件,但来自输入树的 Environment 和 ExceptionList 组件将以原样进行传播。
    • 如果已经对生成方式选择了消息消息和 LocalEnvironment,则从下拉列表为复制消息选择一个值,来定义在 MQGet 节点内生成消息的哪些部分以及从输入消息获取哪些部分。
      • 如果选择 ,则不传播来自输入树的输入消息的任何部分。这是复制消息的缺省值。
      • 如果选择复制头,则从输入树中的输入消息复制头。
      • 如果选择复制整个消息,则从输入树复制整个输入消息。
    • 如果已经对生成方式选择了 LocalEnvironmentMessage and LocalEnvironment,则从下拉列表为复制本地环境选择一个值,来定义在 MQGet 节点内生成本地环境的哪些部分以及从输入消息获取哪些部分。
      • 如果选择,则不复制本地环境的任何部分。
      • 如果选择复制整个 LocalEnvironment,则复制在输入消息中定义的整个本地环境。这是复制本地环境属性的缺省值。
    • 等待时间间隔属性提供一个值,指定从 MQGET 调用收到消息要等待的毫秒数。如果不提供值,则使用缺省值 1000 毫秒。
    • 最小消息缓冲区大小属性提供一个值,指定用于 MQGET 调用的初始缓冲区的大小应该为多少千字节。缓冲区将自动扩展以接收任何大小的消息,但如果预期所有的消息都将很大,则通过指定一个合适的值可以减少重新设置缓冲区大小的频率。如果不提供值,则缓冲区的大小初始将为 4 千字节。
  4. 如果您要 MRM 解析器按照从消息集生成的字典验证消息的体,则在属性对话框导航器中选择“验证”。(如果消息传播到节点的 Failure 终端,则不进行验证。)

    有关更多详细信息,请参阅验证消息MRM 域中消息的验证属性

  5. 在属性对话框导航器中选择“请求”,并为确定如何构造请求参数的属性设置值。
    • 如果要用于 MQGET 调用的 MQMD 不是缺省位置 InputRoot.MQMD,则在输入 MQMD 位置中指定 MQMD 的位置。
    • 如果用于 MQGET 调用的参数(例如,覆盖 MQGMO 中字段的参数)的位置不是缺省位置 InputLocalEnvironment.MQ.GET,则在输入 MQ 参数位置中指定位置。
    • 如果选中通过相关标识获取复选框,则要检索消息的 CorrelId 字段必须与输入 MQMD 位置中的 CorrelId 字段相匹配。缺省情况下,此复选框是清除的。
    • 如果选中通过消息标识获取复选框,则要检索消息的 MsgId 字段必须与输入 MQMD 位置中的 MsgId 字段相匹配。缺省情况下,此复选框是清除的。
    • 如果选中使用完整的输入 MQMD 复选框,则要检索消息的整个 MQMD 必须按位与输入 MQMD 位置的值相匹配。缺省情况下,此复选框是清除的。
  6. 在属性对话框导航器中选择“结果”,并为确定如何处理 MQGET 调用结果的属性设置值。
    • 输出数据位置中输入存储来自所检索消息二进制位串的已解析元素的输出消息树中的起始位置;缺省值为 OutputRoot。此位置的所有元素都将被删除,缺省值为用所检索消息替换输入树消息。

      您可以输入任何有效的 ESQL 字段引用(此引用可以包含表达式),包括新字段引用,以在消息树中创建新节点,从而将响应插入到从输入树传播的消息中。

      例如,OutputRoot.XMLNS.ABC.DEFEnvironment.GotReply 都是有效的字段引用。请参阅在请求-响应流中使用 MQGet 节点,获取更多详细信息。

      当解析所检索消息二进制位串来创建消息树的内容时,将使用您已指定为节点缺省属性的消息属性。

    • 结果数据位置中设置一个值来控制在输出消息中放置所检索消息的哪个子树。缺省值为 ResultRoot,表示在输出消息中放置整个所检索消息。例如,如果您只想要来自所检索消息的 MQMD,则使用 ResultRoot.MQMD;然后此子树就被放置在由输出数据位置指定的位置上。
    • 输出 MQ 参数位置中设置一个值来控制在输出树的什么位置放置 CC(完成代码)、RC(返回码)和任何其他 MQ 参数(例如 MQGET 调用使用的 MQMD)。缺省值为 OutputLocalEnvironment.MQ.GET
    • 警告数据位置中设置一个值来控制当 MQGET 调用返回警告代码时,在何处放置所检索消息。缺省值为 OutputRoot

      您可以输入任何有效的 ESQL 字段引用(请参阅输出数据位置属性的描述)。在此位置放置的数据始终是完整的结果树,其主体为 BLOB 元素。对警告数据不使用结果数据位置

  7. 在属性对话框导航器中选择“一般消息选项”。缺省情况下,解析定时设置为按需解析。这会导致延迟验证,直至进行部分解析。

    如果将该选项更改为立即解析,则将覆盖部分解析,并且除此时无法解析的那些 Choice 或 Message“组合”的复杂类型以外,会解析并验证消息中的所有内容。如果将该选项更改为完全解析,则将覆盖部分解析,并且会解析并验证消息中的所有内容;此时无法解析的 Choice 或 Message“组合”的复杂类型会导致验证失败。

    有关更多详细信息,请参阅MRM 域中消息的验证属性

    如果要使用 MQRFH2C 解析器,则选中使用 MQRFH2C 压缩解析器复选框。缺省情况下,此复选框是清除的,这表示不使用该压缩解析器。

  8. 在属性对话框导航器中选择“XMLNSC 解析器选项”,并为确定如何构造请求参数的属性设置值。

    有关更多信息,请参阅使用 XMLNSC 解析器处理消息

  9. 选择属性对话框导航器中的“描述”,以输入简短描述和/或详细描述。
  10. 单击应用,在不关闭属性对话框的情况下对 MQGet 节点进行更改,或单击确定应用更改并关闭属性对话框。

    单击取消以关闭对话框,并废弃对属性所作的所有更改。

连接终端

如果要进一步处理消息、处理错误或将消息发送到其他目标,请将此节点的 Out、Warning、Failure 和 No Message 输出终端连接到消息流中的另一个节点。

传播到每个输出终端的内容取决于 MQGET 调用生成的条件代码(CC)。

如果 MQGET 调用成功,MQGet 节点将把每个解析的输出消息路由到 Out 终端。

如果 MQGET 调用失败,但带有表示警告的 CC,则将未经解析的输出消息传播到 Warning 终端。

如果 MQGET 调用失败,带有比警告更严重的 CC,则将输入消息传播到 Failure 终端。

更新开始如果MQGET 调用失败,带有原因码 MQRC_NO_MSG_AVAILABLE,则将输出消息(不带结果体)传播到 No Message 终端。传播到 No Message 终端的输出消息是根据“产生方式”和“复制消息”或“复制本地环境”属性的值,仅从输入消息构造的。更新结束

如果没有将 Out、Warning 或 No Message 终端连接到消息流中的另一个节点,则传播到那些终端的所有内容将废弃。

如果没有将 Failure 终端连接到消息流中的另一个节点,则向该终端传播任何内容时,代理将抛出异常。

请参阅连接 failure 终端,获取更多信息。

对协调事务进行配置

在消息流中包含 MQGet 节点时,您为事务方式设置的值将定义是否在同步点下接收消息:

  • 如果将值设置为(缺省值),则在同步点下接收消息(即,在 WebSphere MQ 工作单元中)。同一消息流实例中由输出节点随后发送的任何消息都放置在同步点下,除非输出节点或任何其他后续节点已经明确覆盖了它。
  • 如果您将值设置为自动,则当入局消息标记为持久时,在同步点下接收消息。反之不然。如入局持久性属性所确定的那样,由输出节点随后发送的任何消息都放置在同步点下,除非输出节点或任何其他后续节点已经明确覆盖了它。
  • 如果您将值设置为,则不会在同步点下接收消息。除非个别输出节点或其他任何后继节点已经指定必须将消息放在同步点下,否则不会将任何随后由流中的输出节点发送的消息放在同步点下。

终端和属性

下表中描述了 MQGet 节点的终端。

终端 描述
In 接受消息流正在处理的消息的输入终端。
Warning 输出终端:如果在尝试从队列获取消息时在节点内发生错误(带有表示警告的 CC),则将输出树传播到此输出终端。消息的 MQMD 部分将被解析,但剩余部分的消息是未解析的 BLOB 元素。如果未连接该终端,则将废弃警告,而且根本没有来自该节点的任何输出传播。
Failure 输出终端:如果在尝试从队列获取消息时在节点内发生错误(带有表示比警告更严重错误的 CC),则将输入消息路由到此输出终端。
Out 如果从 WebSphere MQ 队列成功检索到消息,则这就是消息路由到的输出终端。
No Message 更新开始如果队列上没有可用的消息,则输入消息被路由到输出终端。传播到 No Message 终端的输出消息是根据“产生方式”和“复制消息”或“复制本地环境”属性的值,仅从输入消息构造的。更新结束

下表描述该节点的属性;标题为 M 的列表示属性是否是必需的(如果必须输入值,则在属性对话框上以星号作标记),标题为 C 的列表示属性是否是可配置的(将消息流添加到 BAR 文件以部署此文件时可以更改该值)。

下表中描述了 MQGet 节点的基本属性。

属性 M C 缺省值 描述
队列名 此节点从中检索消息的 WebSphere MQ 消息队列的名称。

下表中描述了 MQGet 节点的缺省属性。

属性 M C 缺省值 描述
消息域 将用来解析从消息队列获取的消息的域。
消息集 消息集的名称或标识,在该消息集中定义了从消息队列获取的消息。
消息类型 从消息队列获取的消息的名称。
消息格式 从消息队列获取的消息的物理格式名称。

下表中描述了 MQGet 节点的高级属性。

属性 M C 缺省值 描述
事务方式 是否在同步点下接收入局消息。有效值为自动
生成方式 消息 从输入树复制消息的哪些部分。有效值为消息LocalEnvironment消息和 LocalEnvironment
复制消息 从输入树复制消息的哪些部分。有效值为复制头复制整个消息
复制本地环境   从输入树复制消息的哪些部分。有效值为复制整个 LocalEnvironment。缺省值是 复制整个本地环境
等待时间间隔 1000 从消息队列获取消息要等待的最长时间(以毫秒为单位)。
最小消息缓冲区大小 4 获取缓冲区的最小大小(以千字节为单位)。此属性的最小值为 1 千字节。

下表中描述了 MQGet 节点的验证属性。

请参阅MRM 域中消息的验证属性,以获取这些属性的完整描述。
属性 M C 缺省值 描述
验证 验证是否发生。有效值为 内容内容和值继承
故障操作 异常 验证失败后将发生什么操作。只有将验证设置为内容内容和值,才可以设置该属性。有效值为用户跟踪本地错误日志异常异常列表
包含所有值约束 True 无法编辑此属性。所选的复选框指出的缺省操作,即内容和值 验证中包含的基本值约束检查。
修改 无法编辑此属性。

下表中描述了 MQGet 节点的请求属性。

属性 M C 缺省值 描述
输入 MQMD 位置   指定在输入消息集合中,可以在何处找到要用于 MQGET 的 MQMD。缺省位置是 InputRoot.MQMD。
输入 MQ 参数位置   指定在输入消息集合中,可以在何处找到 MQ 参数(例如初始缓冲区大小和 MQGET 覆盖)。缺省位置是 InputLocalEnvironment.MQ.GET。
通过相关标识获取 False 如果选中此复选框,将导致仅获取具有指定相关标识的消息。
通过消息标识获取 False 如果选中此复选框,将导致仅获取具有指定消息标识的消息。
使用完整的输入 MQMD False 如果选中此复选框,将导致使用完整的 MQMD。否则,将仅使用消息标识和相关标识。

下表中描述了 MQGet 节点的结果属性。

属性 M C 缺省值 描述
输出数据位置 OutputRoot 指定放置输出数据的位置。如果为空,则使用 OutputRoot 作为缺省值。
结果数据位置 ResultRoot 指定要使用(所检索消息的)哪个子树。如果留空,则使用 ResultRoot 作为缺省值,并使用整个所检索消息。例如,如果指定了 ResultRoot.MQMD.ReplyToQ,则仅使用该子树。
输出 MQ 参数位置   指定放置输出 MQ 参数的位置。如果留空,则使用 OutputLocalEnvironment.MQ.GET 作为缺省值。应该将“生成方式”设置为包含 LocalEnvironment,来确保在下游节点中可以看见更新的值。缺省位置是 OutputLocalEnvironment.MQ.GET。
警告数据位置 OutputRoot 指定 MQGET 返回警告代码时,放置输出数据的位置。如果为空,则使用 OutputRoot 作为缺省值。

下表中描述了 MQGet 节点的“一般消息选项”属性。

属性 M C 缺省值 描述
解析计时 按需解析 该属性控制何时解析输入消息。有效值为按需解析立即解析完全解析

请参阅按需解析,获取此属性的完整描述。

将 MQRFH2C 压缩解析器用于 MQRFH2 域 False 该属性控制 MQRFH2 头中是否使用 MQRFH2C 压缩解析器,而不是 MQRFH2 解析器。

下表中描述了 MQGet 节点的“XMLNSC 解析器选项”属性。

属性 M C 缺省值 描述
将 XMLNSC 压缩解析器用于 XMLNS 域 False 更新开始此属性控制 XMLNSC 压缩解析器是否用于 XMLNS 域中的消息。请注意,如果您设置该属性,则当输入 RFH2 头或缺省属性域是 XMLNS 时,连接到输出终端的节点中的 XMLNSC 下会显示消息数据。更新结束
混合内容保留方式 此属性控制当 XMLNSC 解析器遇到输入消息中的混合文本时,是否使用该解析器创建消息树中的元素。有效值为全部。选择全部表示为混合文本创建元素。选择表示忽略混合文本并且不创建元素。
注释保留方式 此属性控制当 XMLNSC 解析器遇到输入消息中的注释时,是否使用该解析器创建消息树中的元素。有效值为全部。选择全部表示为注释创建元素。选择表示忽略注释并且不创建元素。
处理指令保留方式 此属性控制当 XMLNSC 解析器遇到输入消息中的处理指令时,是否使用该解析器创建消息树中的元素。有效值为全部。选择全部表示为处理指令创建元素。选择表示忽略处理指令并且不创建元素。

下表中描述了 MQGet 节点的描述属性。

属性 M C 缺省值 描述
简短描述 空白 节点的简要描述。
详细描述 空白 描述消息流中节点用途的文本。
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac20806_