JMSOutput 节点

本主题包含以下部分:

用途

使用 JMSOutput 节点可以将消息发送到 JMS 目标。JMSOutput 节点充当 JMS 消息的生产者,并且可以发布在 Java 消息服务规范 V1.1 中定义的所有六种类型的消息。消息通过使用方法调用发布,这在 JMS 规范中有所描述。

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

JMSOutput 节点图标

在消息流中使用 JMSOuput 节点

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

处理从 JMS 提供程序的连接接收到的消息的消息流必须始终以 JMSInput 节点开始。如果您在消息流中包含 JMSOutput 节点,则不需要包含 JMSInput 节点,但是如果您不包含 JMSInput 节点,则必须包含 MQJMSTransform 节点以将消息转换为 JMSOutput 节点所需的格式。

如果您正在传播 JMS 消息并且正在创建要用作子流的消息流,则为了创建该子流的 out 终端,必须使用 JMSOutput 节点的实例作为最后一个节点。

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

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

对于 z/OS,没有共享类目录。 而要执行以下过程:
  1. 您必须在代理的分区数据集(PDS)的 BIPPROF 成员的类路径中指定每个 JMS 提供程序 Java .jar 文件。
  2. 用所有本机库更新 LIBPATH。
  3. 提交 BIPGEN JCL 作业以更新代理 ENVFILE。
更新开始

使用消息目的地方式

JMSOutput 节点作为消息生产者,并且支持以下消息方案:

发送数据报消息

数据报是一个自包含的、数据的独立实体,它携带要从源路由到目标计算机的足够信息,不依赖源和目标计算机之间先前的任何交换和传输网络。以下指示信息描述了如何发送数据报消息:
  1. 在请求文件夹中,将目的地方式属性设置为目标名称
  2. 根据使用的消息模型,设置消息目标。将以下某个属性设置为有效的 JNDI 受管对象名称:
    • 发布/预订文件夹中的发布主题
    • 点到点文件夹中的目标队列
  3. 将请求文件夹下的应答目标属性的值设置为空白。
节点解析 JNDI 受管对象的名称,该名称在发布主题目标队列中提供,并将消息发送到该 JMS 目标。

发送应答消息

在某些情况下,消息生产者可能希望使用者来应答消息。在这种情况下,JMSOutput 消息可以将外发消息作为一个应答,并且根据从请求消息的 JMSReplyTo 属性处获取的值路由该消息。以下指示信息描述了如何发送一个应答消息:
  1. 在请求文件夹中,将目的地方式属性设置为应答目标
  2. 您可以使用 Compute 节点或 JavaCompute 节点修改实例的 MbMessage 中的 JMSReplyTo 属性值。 这允许从 JMSOutput 节点动态路由选择消息。
节点将消息发送到 MbMessage 树的 JMSReplyTo 字段中设置的 JMS 目标名。
MbMessage 树中的 JMSReplyTo 值代表从 JNDI 解析的 JMS 目标的名称。例如:
queue://QM_mn2/myJMSQueue4
在这种情况下,此值是 WMQSeries JMS 提供程序的 JMS 目标的 JMS 提供程序的特定说明。
如果您不想指定解析的 JMS 目标名,则 JMSOutput 节点还可以接受 JMSReplyTo 字段中的 JNDI 受管对象名。但是,需要在节点能够将消息路由到底层的 JMS 目标之前,通过 JNDI 解析受管对象名。在这种情况下,JMSReplyTo 字段中的值应该带有前缀字符串:jndi:\\;例如:
jndi:\\jmsQ4
其中 jmsQ4 是 JNDI 受管对象的名称。

由于要在 JNDI 中查找受管对象,因此使用此方法会有少许的性能开销。

发送请求消息

JMSOutput 节点可以根据处理请求的消息使用者的响应,将消息发送到 JMS 目标。以下指示信息描述了如何发送请求消息:
  1. 根据使用的消息模型,设置消息目标。将以下某个属性设置为有效的 JNDI 受管对象名称:
    • 发布/预订文件夹中的发布主题
    • 点到点文件夹中的目标队列
  2. 在请求文件夹中,将目的地方式属性设置为目标名称
  3. 外发消息中的 JMSReplyTo 目标可以从传递到节点的 MbMessage 树的 JMSReplyTo 字段获得。或者,该值可以由应答目标节点属性中设置的 JNDI 受管对象名覆盖。

    如果要允许 JMSOutput 节点能够自动在外发消息中设置 JMSReplyTo 属性,则将应答目标属性保留为空白,并使用 Compute 节点或 JavaCompute 节点在 MbMessage 中设置 JMSReplyTo 值。

节点首先查找 MbMessage 的 JMSReplyTo 字段中的值。如果找到该值,就将它传递到外发消息的 JMSReplyTo 字段。但是,如果已经指定了请求文件夹的应答名称 字段,则第一次解析 JNDI 受管对象的名称后,该值会覆盖先前在外发消息的 JMSReplyTo 属性中设置的任何值。

节点解析 JNDI 受管对象的名称,该名称在发布主题目标队列中提供,并将消息发送到该 JMS 目标。

更新结束

配置 JMSOutput 节点

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

所有未定义缺省值的必需属性在该“属性”对话框上都用星号进行标记。

按如下所示,配置 JMSOutput 节点:

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

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

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

    • 更新开始位置 JNDI 绑定输入某个值。该值指定绑定文件的文件系统路径或 LDAP 位置。绑定文件包含 JMSOutput 节点使用的 JNDI 受管对象的定义。

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

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

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

      更新结束
    • 输入连接工厂名称。 JMSOutput 节点使用连接工厂名称以创建到 JMS 提供程序的连接。绑定文件中必须已包含该名称。
  2. 更新开始如果要使用 JMSOuput 节点来发布主题,则在属性对话框导航器中选择发布/预订
    • 输入发布程序主题的名称。
      • 如果配置此属性,则该节点只在发布/预订消息域中工作。
      • 此属性与点到点属性部分中的目标队列互斥。
      • 发布程序主题名称必须符合该节点正在使用的 JMS 提供程序的标准。
    更新结束
  3. 如果要使用 JMSOutput 节点发送点到点消息,则在属性对话框导航器中选择点到点
    • 为在绑定文件中列出的 JMS 队列名称输入目标队列名称。
  4. 在属性对话框导航器中选择请求并完成以下属性:
    • 目的地方式下拉列表中选择一个选项。
      • 缺省值为目标名称。如果选择此选项,则将消息作为数据报请求对待,并将其目标定为发布主题目标队列
      • 如果要将消息作为应答对待,则选择应答目标名称。将提供 JMS 提供程序,且带有来自消息树的 JMSTransport_Header_values 部分的 JMSReplyTo 值。
    • 应答目标输入一个值。可以输入一个 JMS 目标,该目标可以是预订队列或目标主题。应答目标是接收应用程序应该向其发送应答消息的 JMS 目标的名称。对于要返回至该 JMS 目标的应答消息,JMS 目标名称必须被接收客户机使用的 JMS 提供程序的域知道。

      缺省值为空白,在这种情况下,可以将 JMS 输出消息作为数据报对待。如果该字段为空白,JMSOutput 节点将不会接收到来自接收 JMS 客户机的应答。

  5. 在属性对话框导航器中选择高级
    • 如果需要新建相关标识,则选择该复选框。
    • 要定义消息处理方式的事务特征,请选择事务方式
      • 如果要将出局消息作为非持久消息对待,请选择。如果您选择该值,则使用通过 Session.AUTO_ACKNOWLEDGE 标志创建的非事务 JMS 会话来发送消息。
      • 如果收到消息的 input 节点应该与 JMSOutput 节点发送的 JMS 消息的落实或回滚,以及任何其他资源(如 DB2 或执行消息流内工作的 WebSphere MQ)进行协调,则选择本地。如果您选择该值,则节点使用事务 JMS 会话。
      • 如果 JMSOutput 节点应该参与由代理的外部同步点协调程序管理的全局消息流事务,则选择全局。同步点协调程序是分布式平台上代理的队列管理器和 z/OS 上的 RRS(资源恢复服务)。如果您选择该值,则将使用 XA JMS 会话全局协调任何由节点接收的消息。
    • 您可以通过使用传递方式属性来设置出局 JMS 消息的持久性。从下拉列表中选择选项:
      • 非持久指示 JMS 提供程序应该将消息作为非持久的消息对待。
      • 持久指示 JMS 提供程序将消息标记为持久的消息,且应该保留消息,直到成功传递给接收 JMS 客户机应用程序。
    • 消息到期输入一个值,以请求 JMS 提供程序将输出 JMS 消息保留指定的时间。

      以毫秒为单位输入一个值,以指定 JMS 提供程序将消息保留多长时间。使用缺省值 0 表示消息不会过期。

    • 要对消息指定相对重要性,请从消息优先级下拉列表中选择一个选项。该值可用于通过接收 JMS 客户机应用程序或 JMSOutput 节点选择消息。

      输入一个值,其中消息优先级的有效值为从 0(最低)到 9(最高)。缺省值为 4,表示中等优先级。04 范围内的优先级与常规传递相关。59 范围内的优先级与快速传递相关。

  6. 在属性对话框导航器中选择验证来设置与输出消息验证有关的节点属性。
    • 验证下拉列表中选择一个选项:
      • 内容和值
      • 内容
      • 继承
      如果您选择内容和值内容,则从下拉列表中选择故障操作
      • 用户跟踪
      • 本地错误日志
      • 异常(缺省值)
      • 异常列表

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

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

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

连接终端

将 JMSOutput 节点的 in 终端连接到出站消息经过的节点。

如果要进一步处理消息、处理错误或将消息发送到其他目标,请将 JMSOutput 节点的 out 终端连接到消息流中的另一个节点。

对协调事务进行配置

更新开始

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

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

JMS 提供程序可以提供事务支持所需的其他 JAR 文件。请参阅 JMS 提供程序文档。例如,在分布式系统上,WebSphere MQ JMS 提供程序提供其他的 jar 文件 com.ibm,mqetclient.jar,必须也将它添加到代理共享类目录中。请参阅本主题中的使 JMS 提供程序客户机可由 JMS 节点使用

要在外部同步点下接收消息,需要使用其他配置步骤。 这些步骤仅在首次将 JMSOutput 或 JMSInput 部署到特定 JMS 提供程序的代理时应用:
  • 在分布式系统上,代理的外部同步点协调程序是 WebSphere MQ。在部署事务协调设置为全局的消息流之前,修改队列管理器 .ini 文件以包含每个参与全局协调事务的 JMS 提供程序资源管理器的其他定义。
    • Windows 上:
      • 如果您已安装了 WebSphere MQ V5.0,则启动 WebSphere MQ 服务,然后右键单击队列管理器名。选择属性并单击“资源”属性选项卡。
      • 如果您已安装了 WebSphere MQ V6.0,则启动WebSphere MQ Explorer,然后右键单击左窗格中的队列管理器名。选择属性,然后选择左窗格中的 XA 资源管理器。请参阅《WebSphere MQ 系统管理指南》,以获取更多信息。
        SwitchFile 属性设置为以下值:
        install_dir/bin/ JMSSwitch.dll  
        XAOpenString=Initial Context,location JNDI,Optional_parms
        ThreadOfControl=THREAD 
    • LinuxUNIX 系统上,将节添加到每个 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 的引用。例如,
        <Broker Installation Path>/classes/xarecovery.jar
      2. 更新代理队列管理器的 Java PATH 环境变量以指向替代文件所在的 bin 目录。 例如,
        <Broker Installation Path>/bin

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

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

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

更新结束

终端和属性

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

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

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

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

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

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

位置 JNDI 绑定     绑定文件的系统路径或 LDAP 位置。
连接工厂名称     JMSOutput 节点用来创建到 JMS 提供程序连接的连接工厂名称。

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

属性 M C 缺省值 描述
发布程序主题     节点从中接收已发布消息的主题名称。

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

属性 M C 缺省值 描述
目标队列     节点向其发布出局消息的队列的名称。

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

属性 M C 缺省值 描述
目的地方式   目标名称 此属性用来确定是将消息作为数据报请求对待,还是作为应答对待。
应答目标     此值是接收应用程序应该向其发送应答消息的 JMS 目标。对于要返回至该 JMS 目标的应答消息,JMS 目标名称必须被接收客户机使用的 JMS 提供程序的域知道。

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

属性 M C 缺省值 描述
新建相关标识     如果需要新建相关标识,则选择该属性。
事务方式 此属性用来确定是否在同步点下接收入局消息。有效值为本地全局
传递方式   非持久 将根据消息传递方式过滤消息的消息选择器。
消息到期   0 此属性值用来请求 JMS 提供程序将输出 JMS 消息保留指定的时间。

这些值以毫秒为单位,缺省值 0 用来表示消息不会过期。

消息优先级   4 此属性值指定消息的相对重要性。该值可用于通过接收 JMS 客户机应用程序或 JMSOutput 节点选择消息。

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

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

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

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