MQInput 节点

本主题包含以下部分:

用途

使用 MQInput 节点从使用 WebSphere MQ 企业传输方式 连接到代理,并且使用 MQI 和 AMI 应用程序编程接口的客户机接收消息。

MQInput 节点从代理的队列管理器上定义的 WebSphere MQ 消息队列接收到消息流的消息输入。该节点使用 MQGET 从指定的队列读消息,并为消息建立处理环境。如果适当,可以将输入队列定义为 WebSphere MQ 集群队列或共享队列。

处理跨越 WebSphere MQ 连接接收到的消息的消息流必须始终以 MQInput 节点开始。您可以设置 MQInput 节点的属性来控制接收消息的方法,这可以通过设置相应的 MQGET 选项来实现。例如,您可以表明要在事务控制下处理消息。您还可以请求在接收每条输入消息时执行数据转换。

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

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

如果您在以 MQInput 节点开始的消息流中包含了一个输出节点,则它可以是任何受支持输出节点,包括用户定义的输出节点;不必包含 MQOutput 节点。 您可创建从 WebSphere MQ 客户机接收消息并为使用任何受支持传输连接到代理的客户机生成消息的消息流,因为您可以配置消息流以请求代理提供任何必要的转换。

如果您创建将用作子流的消息流,则无法使用标准输入节点;必须使用输入节点的实例作为第一个节点来为子流创建 in 终端。

如果消息流不通过 WebSphere MQ 连接接收消息,则您可以选择某个受支持的输入节点。

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

MQInput 节点图标

在消息流中使用 MQInput 节点

配置 MQInput 节点

当您将 MQInput 节点的实例放入消息流后,便可对它进行配置。右键单击编辑器视图中的节点,然后单击属性。 将在属性对话框中显示节点的基本属性。

对于所有没有定义缺省值的必需属性,在属性对话框上都会用星号作标记。

如下所示配置 MQInput 节点:

  1. 输入消息流从中接收消息的队列名称。您必须预定义此 WebSphere MQ 队列到主管消息流部署到的代理的队列管理器。
  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 解析器,则从消息集中的下拉列表中选择正确的消息集。当您选择 MRM 或 IDOC 作为域时,用可用消息集植入此列表。

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

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

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

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

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

    • 主题中输入消息主题。您可以输入任何字符作为主题名。当消息通过 MQInput 节点传递时,它们使用您输入的任何主题名。(如果您正在使用发布/预订,则可以预订主题并查看在本主题名下通过 MQInput 节点传递的任何消息。)
  3. 在属性对话框导航器中选择“高级”,设置确定如何处理消息的属性,例如消息的事务特征。这些属性中有许多在 MQGET 调用上映射到选项。
    • 从下拉列表中选择事务方式定义如何处理此消息的事务特征:
      • 如果您选择自动,则在同步点下接收到入局消息(如果该消息标记为持久,反之不然)。随后由输出节点发送的任何派生消息的事务性都由入局持久性属性确定,除非输出节点已经明确地覆盖了事务性。
      • 如果选择,则在同步点下接收入局消息。除非消息流的同一实例中的输出节点已经明确地忽略了事务性,否则任何随后由该输出节点发送的派生消息都进行事务性发送。
      • 如果选择,则不在同步点下接收入局消息。除非流中的输出节点已指定必须将消息放在同步点下,否则任何随后由输出节点发送的派生消息都进行非事务性发送。
    • 从下拉列表中选择排序方式确定从输入队列检索消息的顺序。仅当消息流属性附加实例设置为大于 0 时(即,多个线程读取输入队列),该属性才生效。 有效值是:
      • 缺省。消息按队列属性定义的顺序进行检索,但不保证此顺序,因为这些消息是由消息流处理的。
      • 按用户标识。在 MQMD 中具有相同用户标识的消息是按队列属性定义的顺序进行检索和处理的;在处理消息时可保证保留该顺序。由一个线程处理的与特殊用户标识关联的消息处理完成后,同一线程或另一个线程才可开始用相同用户标识处理另一条消息。保证不保留其他定序。
      • 按队列顺序。消息按队列属性定义的顺序由该节点进行检索和处理;在处理消息时可保证保留该顺序。如果消息流属性附加实例设置为 0,则该行为与实际表现的行为一致。

      有关该选项的详细信息,请参阅配置节点以处理消息组

    • 如果要确保按发送应用程序指定的顺序接收属于消息组的消息,则选中逻辑顺序复选框。此选项映射到 MQI 的 MQGMO 的 MQGMO_LOGICAL_ORDER 选项。

      如果您清除复选框,则不会按预先确定的顺序接收作为组的一部分发送的消息。如果代理要求接收组中的消息并且未选中该复选框,则输入消息的顺序不重要,或必须设计消息流来适当处理它们。

      如果要仅在完成接收和处理了组的最终消息后落实消息处理,则选中由消息组落实复选框。

      有关此属性映射到的选项的更多信息,在 WebSphere MQ Application Programming Reference 中提供。

      有关该选项的详细信息,请参阅配置节点以处理消息组

    • 如果您希望仅当单个组中所有消息为可用时才完成检索和处理消息,则选中所有消息都可用复选框。这映射到 MQI 的 MQGMO 的 MQGMO_ALL_MSGS_AVAILABLE 选项。如果消息检索并不取决于处理开始前组中的所有消息均可用,则清除该复选框。

      有关此属性映射到的选项的更多信息,在 WebSphere MQ Application Programming Reference 中提供。

    • 如果您要输入节点仅接收在 MQMD 的 MsgId 字段中包含匹配消息标识值的消息,则在匹配消息标识中输入消息标识。

      输入最大到 48 位的十六进制数的偶数(字符 0 到 9A 到 Fa 到 f 有效)。如果您输入的标识短于 MsgId 字段的大小,则标识右边以 X'00' 字符填充。 这映射到 MQI 的 MQGMO 的 MQMO_MATCH_MSG_ID 选项。

      当您不要输入节点检查消息标识是否匹配时,将此属性保留为空白。

      有关此属性映射到的选项的更多信息,在 WebSphere MQ Application Programming Reference 中提供。

    • 如果您要输入节点仅接收在 MQMD 的 CorrelId 字段中包含匹配相关标识值的消息,则在匹配相关标识中输入消息标识。

      输入最大到 48 位的十六进制数的偶数(字符 0 到 9A 到 Fa 到 f 有效)。如果您输入的标识短于 CorrelId 字段的大小,则标识右边以 X'00' 字符填充。 这映射到 MQI 的 MQGMO 的 MQMO_MATCH_CORREL_ID 选项。

      当您不要输入节点检查消息标识是否匹配时,将此属性保留为空白。

      有关此属性映射到的选项的更多信息,在 WebSphere MQ Application Programming Reference 中提供。

    • 如果从队列检索消息时您要 WebSphere MQ 在消息上执行数据转换,则选中转换复选框。

      WebSphere MQ 将入局消息转换为在 MQMD中指定的正在编码和已编码的字符集,输入节点在 MQGET 调用上提供 MQMD 以从输入队列检索消息。消息流使用这些值来生成其所有的输出消息,并用这些在 MQMD 中设置的正在编码和已编码的字符集标识的值将消息放入目标队列。

      此属性映射到 MQI 的 MQGMO 的 MQGMO_CONVERT 选项。

      如果不要 WebSphere MQ 转换消息,则清除复选框。

      如果您选择此框,则同样指定:

      • 转换编码。输入表示您要在消息体中将数字数据转换编码的个数。有效值包括:
        • 对于 DOS 和所有 Windows 系统为 546
        • 对于所有 Linux 和 UNIX 系统为 273
        • 对于 z/OS 系统为 785

        如果您不指定值,则使用入局消息 MQMD 中的值。

        如果您指定了无效值,则没有完成转换。

      • 转换编码的字符集标识。输入表示您要在消息体中将字符数据转换为字符集标识的个数。

        如果您不指定值,则使用入局消息 MQMD 中的值。

        如果您指定了无效值,则没有完成转换。

      有关 WebSphere MQ 数据转换的更多信息,以及您可能选择使用该选项的原因,请参阅WebSphere MQ Application Programming Guide。 有关可为转换编码转换编码的字符集标识所指定的值的更多信息,请参阅 WebSphere MQ Application Programming Reference

    • 如果要仅当已经接收和处理了组的最终消息后落实消息处理,则选中由消息组落实复选框。如果您将此复选框留为已清除,则在通过消息流完全传播每条消息后执行落实。

      仅当您已选择逻辑顺序时该属性才相关。

      如果组中的消息必须按消息在队列上出现的顺序进行检索和处理,则将排序方式属性设置为按队列顺序

    • (仅 z/OS)。如果要使用 WebSphere MQ 提供的对共享资源的序列化访问,在 z/OS 序列化标记中输入序列化标记。

      为序列化标记输入的值必须符合 WebSphere MQ Application Programming Reference 值描述的规则。

      有关 z/OS 上序列化和队列共享的更多信息,请参阅 WebSphere MQ Concepts and Planning Guide

  4. 如果您要 MRM 解析器按照从消息集生成的字典验证消息的体,则在属性对话框导航器中选择“验证”。(如果消息传播到节点的 Failure 终端,则不进行验证。)

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

  5. 在属性对话框导航器中选择“一般消息选项”。缺省情况下,解析定时设置为按需解析。这会导致延迟验证,直至进行部分解析。如果将该选项更改为立即,则覆盖部分解析,并且会解析并验证消息中的所有内容;除了此时无法解析的那些组合为“选项”或“消息”的复杂类型。如果将该选项更改为完全解析,则将覆盖部分解析,并且会解析并验证消息中的所有内容;此时无法解析的组合为“选项”或“消息”的复杂类型会导致验证失败。
  6. 选择属性对话框导航器中的“描述”,以输入简短描述和/或详细描述。
  7. 单击应用在不关闭“属性”对话框的情况下对 MQInput 节点进行更改。单击确定以应用更改,并关闭属性对话框。

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

连接终端

MQInput 将它成功获取的每个消息都路由到 out 终端。如果该操作失败,则重试消息。如果重试超时到期(如输入队列的 BackoutThreshold 属性所定义的那样), 则消息路由到 failure 终端;您可通过将节点与此终端相连来处理这情况。如果您未连接 Failure 终端,则消息会写入回退队列。

如果消息是已经在消息流中进一步抛出异常后由节点捕捉到的,则将该消息路由到 catch 终端。如果没有连接 catch 终端,则消息通过节点持续循环直至问题解决。您必须定义回退队列或死信队列(DLQ),继续通过节点阻止消息循环。

对协调事务进行配置

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

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

(MQOutput 节点是您可以配置为覆盖此选项的唯一输出节点。)

配置节点以处理消息组

WebSphere MQ 支持消息组;您可指定消息属于某个组以及组中该消息的处理以及所有其他消息的处理必须作为一个事务处理。即,如果组中对一个消息的处理失败,则回退组中所有消息。仅当所有消息的处理都已成功完成,才会在组中最后一个消息处理成功后落实消息处理。

如果在组中包含消息,且组内所有消息都需要从队列读取并按它们在组中定义的顺序进行处理,则必须如下所述完成所有操作:

  • 选中由消息组落实复选框。
  • 选中逻辑顺序复选框。
  • 排序方式设置为按队列顺序或将消息流属性附加实例设置为 0。(可在将消息流添加到 BAR 文件进行部署时修改消息流属性。)如果选择上述选项中任意一个(或两者都选),在消息流在单执行线程上处理消息,且完成一个消息的处理后会从队列检索下一个消息。所有其他情况下,单个消息流中的多个线程可处理多个消息,但不保证组中最后一个消息(会提示落实或回滚操作)会在组内所有其他消息之后完成处理。

您还必须确保没有其他消息流正在从相同输入队列检索消息。如果由消息流正在检索,则不保证消息在组内处理的顺序。

终端和属性

下表描述 MQInput 节点的终端。

终端 描述
Failure 如果发生错误,则这是消息路由到的输出终端。即使设置了“验证”属性,也不验证传播到此终端的消息。
Out 如果从 WebSphere MQ 队列成功检索到消息,则这就是消息路由到的输出终端。
Catch 如果下游抛出异常并由此节点捕获,则这是消息路由到的输出终端。

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

下表描述 MQInput 节点的“基本”属性。

属性 M C 缺省值 描述
队列名   WebSphere MQ 输入队列的名称,该节点从该输入队列检索由该消息流处理的消息(使用 MQGET)。

下表描述 MQInput 节点的“缺省”属性。

属性 M C 缺省值 描述
消息域   用于解析入局消息的域。
消息集   定义入局消息的消息集的名称或标识。
消息类型   入局消息的名称。
消息格式   入局消息物理格式的名称。
主题   输入消息的缺省主题。

下表描述 MQInput 节点的“高级”属性。

属性 M C 缺省值 描述
事务方式 是否在同步点下接收入局消息。 有效值为自动
排序方式 缺省值 从输入队列检索以及处理消息的顺序。有效值为缺省按用户标识按队列顺序
逻辑顺序 选中 是否按逻辑顺序接收消息,如 WebSphere MQ 定义的那样。如果您选中该复选框,则执行此操作。
所有消息都可用 已清除 如果您选中该复选框,则组中的所有消息在可检索消息之前必须可用。
匹配消息标识   消息标识,必须与入局消息的 MQMD 中的消息标识相匹配。
匹配相关标识   相关标识,必须与入局消息的 MQMD 中的相关标识相匹配。
转换 已清除 WebSphere MQ 是否与 MQMD 中编码字符集标识和编码值集一样在要检索的消息中执行数据转换。如果您选中该复选框,则执行此操作。
转换编码   用于消息数据中数值的表示,作为整数值表示。仅当您已经选中转换复选框时,此属性才有效。
转换编码字符集标识   消息数据中字符数据的编码字符集标识,作为整数值表示。仅当您已经选中转换复选框时,此属性才有效。
由消息组落实 已清除 处理属于消息组的消息时,何时落实事务。如果您选中该复选框,则在完成消息组处理后落实事务。
z/OS 序列化标记   用于提供序列化应用程序支持的用户定义的标记。 所指定的值必须符合 WebSphere MQ MQCNO 结构中有效 ConnTag 的规则。WebSphere MQ Application Programming Reference 中对这些规则进行了描述。

下表描述 MQInput 节点的“验证”属性。

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

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

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

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

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

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

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

下表描述 MQInput 节点的“描述”属性。

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