JMSInput 节点

本主题包含以下部分:

用途

使用 JMSInput 节点可以从 JMS 目标接收消息。通过到 JMS 提供程序的连接访问 JMS 目标。JMSInput 节点充当 JMS 消息的使用者,并且可以接收在 Java 消息服务规范 V1.1 中定义的所有六种类型的消息。消息通过使用方法调用接收,这在 JMS 规范中有所描述。

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

JMSInput 节点图标

在消息流中使用 JMSInput 节点

JMS 节点样本包含在其中使用 JMSInput 节点的消息流。请参阅此样本,获取如何使用 JMSInput 节点的示例。

JMSInput 节点以 JMS 消息树接收并传播消息。您可以设置 JMSInput 节点的属性来控制接收 JMS 消息的方式。

JMSInput 节点在以下消息域中处理消息:

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

消息流处理接收自 JMS 提供程序连接的消息,且必须始终以 JMSInput 节点开始。如果在以 JMSInput 节点开头的消息流中包含输出节点,则该节点可以是任何受支持的输出节点(包括用户定义的输出节点);不一定要包含 JMSOutput 节点。然而,如果没有包含 JMSOutput 节点,则必须包含 JMSMQTransform 节点将消息转换为该输出节点预期的格式。

如果您正在传播 JMS 消息并且正在创建要作为子流使用的消息流,则不能使用标准输入节点;为了创建该子流的 In 终端,必须使用 JMSInput 节点的实例作为第一个节点。

限制: 使用 JMSInput 节点接收发布主题时,当前有一个限制。该节点在内部将消息流属性附加实例限制为零,以防止接收重复的发布内容。

使 JMS 提供程序客户机可由 JMS 节点使用

对于分布式平台,将 JMS 提供程序客户机的 Java .jar 文件和任何本机库复制到代理共享类目录下。 例如,在 Windows 上为 C:\Documents and Settings\All Users\Application Data\IBM\MQSI\shared-classes。这可确保正确设置 JMS 节点的 Java 类路径。

对于 z/OS,则没有共享类目录。因此,您必须在代理 PDS(分区数据集)的 BIPPROF 成员中指定类路径的每个 JMS 提供程序 Java .jar 文件。 然后使用任何本机库更新 LIBPATH,并提交 BIPGEN JCL 作业以更新代理 ENVFILE。

配置 JMSInput 节点

将 JMSInput 节点的实例放入消息流中后,可以对其进行配置。右键单击编辑器视图中的节点,然后单击属性。此时属性对话框中将显示该节点的基本属性。

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

如下所示,配置 JMSInput 节点:

  1. 在属性对话框导航器中选择基本并完成以下属性:
    • 初始上下文工厂输入某个值。JMS 应用程序使用初始上下文来获取和查找 JMS 提供程序的 JNDI 受管对象。缺省值为

      com.sun.jndi.fscontext.RefFSContextFactory,它定义了 WebSphere MQ JMS 提供程序的基于文件的初始上下文工厂。

      要标识 JMS 提供程序的初始上下文工厂名称,请参阅 JMS 提供程序文档。

    • 位置 JNDI 绑定输入某个值。该值指定绑定文件的文件系统路径或 LDAP 位置。绑定文件包含 JMSInput 节点使用的 JNDI 所管理对象的定义。

      在您为位置 JNDI 绑定输入某个值时,确保它符合以下指示信息:

      • 在部署包含 JMSInput 节点的消息流之前构造绑定文件。
      • 请勿在该字段中包含绑定文件的文件名。
      • 如果您已指定了需要认证的 LDAP 位置,则必须分别配置 LDAP 主体(用户标识)和 LDAP 凭证(密码)。这些值是在代理级别上配置的。有关配置这些值的信息,请参阅 mqsicreatebrokermqsichangebroker 命令。
      • 字符串值应包含以下某个前导关键字:file:/iiop:/ldap:/

      有关构造 JNDI 所管理的对象绑定文件的信息,请参阅 JMS 提供程序随附的文档。

    • 输入连接工厂名称。 JMSInput 节点使用连接工厂名称以创建到 JMS 提供程序的连接。绑定文件中必须已包含该名称。
    • 输入回退目标名称。当发生错误,阻止消息流处理消息时,输入消息将被发送到此目标,且必须从输入目标除去该消息。回退目标名称必须存在于绑定文件中。
    • 回退阈值输入一个值。此值将确定何时将输入消息放入回退目标。例如,如果该值为 3,则 JMS 提供程序将试图把消息传递到输入目标三次。三次尝试传递之后,将从输入目标中除去该消息,并将它发送到回退目标。缺省值为 0
  2. 在属性对话框导航器中选择缺省值,并为描述消息域、消息集、消息类型和消息格式的属性设置值。
    • 消息域中,从下拉列表中选择正在使用的解析器名称。可以从下列名称中选择:
      • MRM
      • XML
      • XMLNS
      • XMLNSC
      • JMSMap
      • JMSStream
      • MIME
      • BLOB
      • IDOC
      如果将消息域保留为空白,JMSInput 节点将按照以下两种方式中的一种确定域:
      • 通过检查 JMS 输入消息的 JMSType 头值中是否存在数据。
      • 根据 JMS 消息的 JMS 类。
      有关确定消息域的优先顺序的信息,请参阅派生消息域的优先顺序
    • 如果您使用的是 MRM 或 IDOC 解析器,则从消息集中的下拉列表中选择正确的消息集。当您选择 MRM 或 IDOC 作为域时,用可用消息集植入此列表。

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

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

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

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

      对于 XML、XMLNS、XMLNSC、JMSMap、JMSStream、MIME 和 BLOB 解析器,保留消息格式为空白。

  3. 如果要使用 JMSInput 节点来预订主题,则在属性对话框导航器中选择发布/预订
    • 输入预订主题的名称。
      • 如果配置此属性,则该节点只在发布/预订消息域中操作。
      • 此属性与点到点属性部分中的资源队列互斥。
      • 预订主题名称必须符合该节点正在使用的 JMS 提供程序的标准。

    • 如果要节点要从持续的预订主题接收发布内容,则输入持续预订标识
      • 除去持续预订是单独的管理任务。有关除去持续预订的信息,请参阅 JMS 提供程序文档。
      • 此属性仅当已指定预订主题字符串时有效。
  4. 如果要使用 JMSInput 节点接收点到点的消息,则在属性对话框导航器中选择点到点
    • 输入资源队列名称,其中资源队列是在绑定文件中列出的 JMS 队列。
  5. 如果需要过滤消息,在属性对话框导航器中选择消息选择器
    • 如果需要 JMS 提供程序根据发起 JMS 客户机应用程序设置的消息属性过滤消息,为应用程序属性设置值,并指定属性名称和选择条件;例如 OrderValue > 200

      如果不希望输入节点根据应用程序属性进行选择,则保留此属性为空白。请参阅 JMS 消息选择器,获取如何构造消息选择器的描述。

    • 如果需要 JMS 提供程序过滤已在特定时间生成的消息,为时间戳记输入一个值,其中该值是非限定 Java 毫秒时间,例如 105757642321。使用运算符(如 BETWEENAND)限定选择器。

      如果不希望输入节点根据 JMSTimeStamp 进行选择,则保留此属性为空白。

    • 如果需要 JMS 提供程序根据 JMS 消息中的 JMSDeliveryMode 头值过滤消息,从下拉列表中选择传递方式的值。您可从下列各项中选择:
      • 非持久,接收被发起 JMS 客户机应用程序标记为非持久的消息。这是缺省选项。
      • 持久,接收被发起 JMS 客户机应用程序标记为持久的消息。
    • 如果需要 JMS 提供程序根据 JMS 消息中的 JMSPriority 头值过滤消息,为优先级输入一个值。

      有效的消息优先级值为从 0(最低)到 9(最高)。例如,您可以输入 5 来接收优先级为 5 的消息。您还可以限定选择器;例如 > 4 可以接收优先级大于 4 的消息,或 BETWEEN 4 AND 8 可以接收优先级在 4 到 8 之间的消息。

      如果不希望输入节点根据 JMSPriority 进行选择,则保留此属性为空白。

    • 如果需要 JMS 提供程序根据 JMSMessageID 头过滤消息,则为消息标识输入值。

      输入一个特定的消息标识或输入一个条件选择器;例如输入 > WMBRK123456 可以返回消息标识大于 WMBRK123456 的消息。

      如果不希望输入节点根据 JMSMessageID 进行选择,则保留此属性为空白。

    • 如果需要 JMS 提供程序根据 JMSRedelivered 头过滤消息,则为重新传递输入一个值。

      如果输入节点只接收尚未被 JMS 提供程序重新传递的消息,则输入 FALSE

      如果输入节点只接收已经被 JMS 提供程序重新传递的消息,则输入 TRUE

      如果不希望输入节点根据 JMSRedelivered 进行选择,则保留此属性为空白。

    • 如果需要 JMS 提供程序根据 JMSCorrelationID 头过滤消息,则为相关标识输入值。

      输入一个特定的相关标识或输入一个条件字符串;例如输入 WMBRKABCDEFG 将返回其相关标识与此值匹配的消息。

      如果不希望输入节点根据 JMSCorrelationID 进行选择,则保留此属性为空白。

  6. 在属性对话框导航器中选择高级
    • 要定义消息处理方式的事务特征,请从事务方式下拉列表中进行选择。您可以选择以下某个选项:
      • 如果要将入局消息作为非持久消息处理,选择。如果选择该值,则使用通过 Session.AUTO_ACKNOWLEDGE 标记创建的非事务 JMS 会话来接收消息。
      • 如果 JMSInput 节点应该协调该节点收到的 JMS 消息的落实或回滚,以及任何其他资源(如 DB2 或执行消息流内工作的 WebSphere MQ),则选择本地。如果您选择该值,则节点使用事务 JMS 会话。
      • 如果 JMSInput 节点应该参与将由代理外部同步点协调程序管理的全局消息流事务,则选择全局。同步点协调程序是分布式平台上代理的队列管理器和 z/OS 上的 RRS(资源恢复服务)。如果您选择该值,则将使用 XA JMS 会话全局协调任何由节点接收的消息。
  7. 在属性对话框导航器中选择验证来设置与输入消息验证有关的节点属性。
    • 验证下拉列表中选择一个选项。可用的选项是:
      • 内容和值
      • 内容
      如果选择内容内容和值,则从故障操作下拉列表选择一个选项。可用的选项是:
      • 用户跟踪
      • 本地错误日志
      • 异常(缺省值)
      • 异常列表

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

  8. 在属性对话框导航器中选择“一般消息选项”。解析超时的缺省值被设置为按需解析。这导致延迟验证,直到对消息进行部分解析。

    如果将此值更改为立即解析,则覆盖部分解析,除当时无法解析的“组合”为 Choice 或 Message 的复杂类型以外,消息中的所有内容都将被解析和验证。

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

  9. 在属性对话框导航器中选择 XMLNSC 解析器选项

    如果您想要对 XMLNS 域使用 XMLNSC 压缩解析器,选择该复选框。

    对于混合内容保留方式注释保留方式处理指令保留方式,下拉框提供以下选项:

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

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

连接终端

JMSInput 节点将把成功收到的每条消息路由到 out 终端。如果该操作失败,则重试消息。如果达到节点的 BackoutThreshold 属性定义的重试阈值,则消息被路由到 failure 终端。

您可以将节点连接到 failure 终端来处理这种情况。如果尚未将节点连接到 failure 终端,消息将被写至回退目标。如果尚未提供回退目标,则发出错误消息,节点停止处理进一步的输入。错误消息为 bip4669

如果在消息流中的其他地方抛出异常之后,JMSInput 节点捕获消息,则该消息将被路由到 catch 终端。如果尚未将节点连接到 catch 终端,则节点将回退消息进行重新传递,直到解决该问题或达到回退阈值。

必须定义回退目标。如果不定义回退目标,该节点将发出 bip4669 错误消息并停止处理进一步的输入。

对协调事务进行配置

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

  • 如果您将其设置为全局,则在外部同步点协调下接收消息,即 WebSphere MQ 工作单元中。除非消息流的同一实例中的输出节点已经明确地忽略该设置,否则将任何随后由输出节点发送的消息都放在同步点下。
  • 如果将它设置为本地,则在 JMSInput 节点的本地同步点控制下接收消息。除非个别输出节点已经指定必须将消息放在本地同步点下,否则不会将任何随后由流中的输出节点发送的消息放在本地同步点下。
  • 如果将它设置为,则不会在同步点下接收消息。除非个别输出节点已经指定必须将消息放在同步点下,否则不会将任何随后由流中的输出节点发送的消息放在同步点下。

JMS 提供程序可以提供事务支持所需的其他 JAR 文件。请参阅 JMS 提供程序文档。例如,在分布式(非 z/OS)平台上,WebSphere MQ JMS 提供程序提供额外的 jar 文件 com.ibm,mqetclient.jar。 必须也将此 JAR 添加到代理 shared_classes 目录。请参阅本主题中的使 JMS 提供程序客户机可由 JMS 节点使用

要在外部同步点下接收消息,需要使用其他配置步骤。 这些步骤仅在首次将 JMSOutput 或 JMSInput 部署到特定 JMS 提供程序的代理时应用。
  • 在分布式平台上,代理的外部同步点协调程序是 WebSphere MQ。在部署事务协调设置为全局的消息流之前,修改队列管理器 .ini 文件以包含每个参与全局协调事务的 JMS 提供者资源管理器的额外定义。
    • 如果您已经在 Windows 上安装了 WebSphere MQ V5,则启动 WebSphere MQ 服务,然后右键单击队列管理器名。选择属性并单击“资源”属性选项卡。如果您已安装了 WebSphere MQ V6,则启动WebSphere MQ Explorer,然后右键单击左窗格中的队列管理器名。选择属性,然后选择左窗格中的 XA 资源管理器。请参阅《WebSphere MQ 系统管理指南》,获取更多信息。
      SwitchFile 属性设置为以下值:
      install_dir/bin/ JMSSwitch.dll
      XAOpenString=Initial Context,location JNDI,Optional_parms
      ThreadOfControl=THREAD 
    • 在 Linux 和 UNIX 平台上,将节添加至每个 JMS 提供者的队列管理器 ini 文件中。请参阅《WebSphere MQ 系统管理指南》,获取更多信息。
      例如,
      XAResourceManager:
      Name=Jms_Provider_Name 
      SwitchFile=/install_dir/bin/ JMSSwitch.so
      XAOpenString=Initial Context,location JNDI,Optional_parms
      ThreadOfControl=THREAD
      其中:

      Name 是安装程序定义的名称,用于标识 JMS 提供者资源管理器。

      SwitchFile 是指向 JMSSwitch 库的文件系统路径,该库位于代理的 bin 目录下。

      XAOpenString 的值如下所示:
      • Initial Context 是在 JMSInput 节点的基本属性初始上下文工厂中设置的值。
      • location JNDI 是在 JMSInput 节点的基本属性 JNDI 位置中设置的值。 该值应包括前导关键字 file:/iiop:/ldap:/
      以下参数是可选的:
      • LDAP 主体与使用 mqsicreatebrokermqsichangebroker 命令为代理设置的值相匹配。
      • LDAP 凭证与使用 mqsicreatebrokermqsichangebroker 命令为代理设置的值相匹配。
      • 恢复连接工厂名称是定义于绑定文件中由 JNDI 管理的连接工厂。如果未指定值,则必须将 recoverXAQCF 的缺省值添加至绑定文件。在这两种情况的任何一种情况中,都应该将恢复连接工厂定义为与初始上下文工厂关联的 JMS 提供程序的 XA 队列连接工厂。

      可选参数以逗号分隔且位置固定。因此,任何缺少的参数必须以逗号表示。

      1. 更新代理队列管理器的 Java CLASSPATH 环境变量以包含对 xarecovery.jar 的引用。例如,
        install_dir/classes/xarecovery.jar
      2. 更新代理队列管理器的 Java PATH 环境变量以指向 Switch 文件所在的 bin 目录。 例如:
        install_dir/bin

      WebSphere MQ V5.3、CSD12 和 WebSphere MQ V6 修订包 1 之前,XA 无法对代理和提供者使用相同的队列管理器。

    • 在 z/OS 上,外部同步点管理器为资源恢复服务(RRS)。WebSphere MQ JMS 是 z/OS 上支持的唯一 JMS 提供程序。 绑定选项是 WebSphere MQ JMS 在 z/OS 上支持的唯一传输选项。

      JMS 提供程序的同步点控制采用代理队列管理器的 RRS 同步点协调进行管理。您无需修改 .ini 文件。

终端和属性

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

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

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

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

属性 M C 缺省值 描述
初始上下文工厂   com.sun.jndi.fscontext.RefFSContextFactory 这是 JNDI 名称空间的起点。JMS 应用程序使用初始上下文获取并查找连接工厂以及 JMS 提供程序的队列或主题对象。

缺省值为 WebSphere MQ Java 用作 JMS 提供程序时所用的值。

位置 JNDI 绑定     绑定文件的系统路径或 LDAP 位置。
连接工厂名称     JMSInput 节点用来创建到 JMS 提过程序连接的连接工厂名称。
回退目标     当因为在消息中发生错误,所以消息流无法处理消息时,JMSInput 节点使用的目标。
回退阈值   0 控制何时将重新传递的消息放至回退目标的值。

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

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

下表中描述了 JMSInput 节点的发布/预订属性。

属性 M C 缺省值 描述
预订主题   节点预订主题的名称。
持续预订标识   持续预订主题的标识。

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

属性 M C 缺省值 描述
源队列       节点从中接收入局消息的队列名称。

下表中描述了 JMSInput 节点的消息选择属性。

属性 M C 缺省值 描述
应用程序属性     将根据应用程序属性值过滤消息的消息选择器。
时间戳记     将根据 JMSTimestamp 过滤的消息选择器。
传递方式     将根据消息传递方式过滤消息的消息选择器。
优先级     将根据消息优先级过滤消息的消息选择器。
消息标识     将根据消息标识过滤消息的消息选择器。
相关标识     将根据相关标识过滤消息的消息选择器。

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

属性 M C 缺省值 描述
事务方式 none 此属性用来确定是在外部同步点、本地同步点还是同步点外接收入局消息。有效值为本地全局

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

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

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

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

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

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

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

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

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