使用 JMSInput 节点可以从 JMS 目标接收消息。通过到 JMS 提供程序的连接访问 JMS 目标。JMSInput 节点充当 JMS 消息的使用者,并且可以接收在 Java 消息服务规范 V1.1 中定义的所有六种类型的消息。消息通过使用方法调用接收,这在 JMS 规范中有所描述。
JMSInput 节点在工作台中由以下图标表示:
消息流处理接收自 JMS 提供程序连接的消息,且必须始终以 JMSInput 节点开始。如果在以 JMSInput 节点开头的消息流中包含输出节点,则该节点可以是任何受支持的输出节点(包括用户定义的输出节点);不一定要包含 JMSOutput 节点。然而,如果没有包含 JMSOutput 节点,则必须包含 JMSMQTransform 节点将消息转换为该输出节点预期的格式。
如果您正在传播 JMS 消息并且正在创建要作为子流使用的消息流,则不能使用标准输入节点;为了创建该子流的 In 终端,必须使用 JMSInput 节点的实例作为第一个节点。
对于分布式平台,将 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 节点:
com.sun.jndi.fscontext.RefFSContextFactory,它定义了 WebSphere MQ JMS 提供程序的基于文件的初始上下文工厂。
要标识 JMS 提供程序的初始上下文工厂名称,请参阅 JMS 提供程序文档。
在您对位置 JNDI 绑定输入某个值时,确保它符合以下指示信息:
有关 JNDI 所管理对象的绑定文件的信息,请参阅 JMS 提供程序随附提供的文档。
将 XML、XMLNS、JMS、 和 BLOB 解析器的消息集保留为空白。
将 XML、XMLNS、 JMS、、BLOB 和 解析器的消息类型保留为空白。
对于 XML、XMLNS、JMSMap、JMSStream、 和 BLOB 解析器,保留消息格式为空白。
如果不希望输入节点根据应用程序属性进行选择,则保留此属性为空白。请参阅 JMS 消息选择器,获取如何构造消息选择器的描述。
如果不希望输入节点根据 JMSTimeStamp 进行选择,则保留此属性为空白。
有效的消息优先级值为从 0(最低)到 9(最高)。例如,您可以输入 5 来接收优先级为 5 的消息。您还可以限定选择器;例如 > 4 可以接收优先级大于 4 的消息,或 BETWEEN 4 AND 8 可以接收优先级在 4 到 8 之间的消息。
如果不希望输入节点根据 JMSPriority 进行选择,则保留此属性为空白。
输入一个特定的消息标识或输入一个条件选择器;例如输入 > WMBRK123456 可以返回消息标识大于 WMBRK123456 的消息。
如果不希望输入节点根据 JMSMessageID 进行选择,则保留此属性为空白。
如果输入节点只接收尚未被 JMS 提供程序重新传递的消息,则输入 FALSE。
如果输入节点只接收已经被 JMS 提供程序重新传递的消息,则输入 TRUE。
如果不希望输入节点根据 JMSRedelivered 进行选择,则保留此属性为空白。
输入一个特定的相关标识或输入一个条件字符串;例如输入 WMBRKABCDEFG 将返回其相关标识与此值匹配的消息。
如果不希望输入节点根据 JMSCorrelationID 进行选择,则保留此属性为空白。
如果您想要对 XMLNS 域使用 XMLNSC 压缩解析器,选择该复选框。
对于混合内容保留方式、注释保留方式和处理指令保留方式,下拉框提供以下选项:
单击取消关闭对话框,并废弃对属性所作的所有更改。
JMSInput 节点将把成功收到的每条消息路由到 out 终端。如果该操作失败,则重试消息。如果达到节点的 BackoutThreshold 属性定义的重试阈值,则消息被路由到 failure 终端。
您可以将节点连接到 failure 终端来处理这种情况。如果尚未将节点连接到 failure 终端,消息将被写至回退目标。如果尚未提供回退目标,则发出错误消息,节点停止处理进一步的输入。错误消息为 bip4669。
如果在消息流中的其他地方抛出异常之后,JMSInput 节点捕获消息,则该消息将被路由到 catch 终端。如果尚未将节点连接到 catch 终端,则节点将回退消息进行重新传递,直到解决该问题或达到回退阈值。
必须定义回退目标。如果不定义回退目标,该节点将发出 bip4669 错误消息并停止处理进一步的输入。
在消息流中包含 JMSInput 节点后,您为事务方式设置的值将定义是否在同步点下接收消息。
JMS 提供程序可以提供事务支持所需的其他 JAR 文件。请参阅 JMS 提供程序文档。例如,在分布式(非 z/OS)平台上,WebSphere MQ JMS 提供程序提供额外的 jar 文件 com.ibm,mqetclient.jar。 必须也将此 JAR 添加到代理 shared_classes 目录。请参阅本主题中的使 JMS 提供程序客户机可由 JMS 节点使用。
<Broker Installation Path>/bin/ JMSSwitch.dll XAOpenString=<Initial Context >,<location JNDI>, <Optional> ThreadOfControl=THREAD
XAResourceManager: Name=<Jms_Provider_Name> SwitchFile=/<Broker Installation Path>/bin/ JMSSwitch.so XAOpenString=<Initial Context >,<location JNDI>, <Optional> ThreadOfControl=THREAD其中
name 是安装程序定义的名称,用于标识 JMS 提供程序资源管理器。
SwitchFile 是指向 JMSSwitch 库的文件系统路径,该库位于代理的 bin 目录下。
可选参数以逗号分隔且位置固定。因此,任何缺少的参数必须以逗号表示。
<Broker Installation Path>/classes/xarecovery.jar
<Broker Installation Path>/bin
在 WebSphere MQ V5.3、CSD12 和 WebSphere MQ V6 修订包 1 之前,XA 无法同时对代理和提供程序使用相同的队列管理器。
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 | 缺省值 | 描述 |
---|---|---|---|---|
事务方式 | 是 | 否 | none | 此属性用来确定是在外部同步点、本地同步点还是同步点外接收入局消息。有效值为无、本地和全局。 |
下表中描述了 JMSInput 节点的描述属性。
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
简短描述 | 否 | 否 | 节点的简短描述。 | |
详细描述 | 否 | 否 | 描述消息流中节点用途的文本。 |