使用 JMSInput 节点可以从 JMS 目标接收消息。通过到 JMS 提供程序的连接访问 JMS 目标。JMSInput 节点充当 JMS 消息的使用者,并且可以接收在 Java 消息服务规范 V1.1 中定义的所有六种类型的消息。消息通过使用方法调用接收,这在 JMS 规范中有所描述。
JMSInput 节点在工作台中由以下图标表示:
JMSInput 节点以 JMS 消息树接收并传播消息。您可以设置 JMSInput 节点的属性来控制接收 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、XMLNSC、JMS、MIME 和 BLOB 解析器的消息集保留为空白。
将 XML、XMLNS、XMLNSC、 JMS、MIME、BLOB 和 IDOC 解析器的消息类型保留为空白。
对于 XML、XMLNS、XMLNSC、JMSMap、JMSStream、MIME 和 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 进行选择,则保留此属性为空白。
有关更多详细信息,请参阅验证消息和MRM 域中消息的验证属性。
如果将此值更改为立即解析,则覆盖部分解析,除当时无法解析的“组合”为 Choice 或 Message 的复杂类型以外,消息中的所有内容都将被解析和验证。
如果将该选项更改为完全解析,则将覆盖部分解析,并且会解析并验证消息中的所有内容;此时无法解析的 Choice 或 Message“组合”的复杂类型会导致验证失败。
如果您想要对 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 节点使用。
install_dir/bin/ JMSSwitch.dll XAOpenString=Initial Context,location JNDI,Optional_parms ThreadOfControl=THREAD
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 目录下。
可选参数以逗号分隔且位置固定。因此,任何缺少的参数必须以逗号表示。
install_dir/classes/xarecovery.jar
install_dir/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 | 缺省值 | 描述 |
---|---|---|---|---|
消息域 | 否 | 否 | 用于解析入局消息的域。 | |
消息集 | 否 | 否 | 定义入局消息的消息集的名称或标识。 | |
消息类型 | 否 | 否 | 入局消息的名称。 | |
消息格式 | 否 | 否 | 入局消息物理格式的名称。 |
下表中描述了 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 解析器遇到输入消息中的混合文本时,是否使用该解析器创建消息树中的元素。有效值为无和全部。选择全部表示为混合文本创建元素。选择无表示忽略混合文本并且不创建元素。 |
注释保留方式 | 是 | 否 | 无 | 此属性控制当 XMLNSC 解析器遇到输入消息中的注释时,是否使用该解析器创建消息树中的元素。有效值为无和全部。选择全部表示为注释创建元素。选择无表示忽略注释并且不创建元素。 |
处理指令保留方式 | 是 | 否 | 无 | 此属性控制当 XMLNSC 解析器遇到输入消息中的处理指令时,是否使用该解析器创建消息树中的元素。有效值为无和全部。选择全部表示为处理指令创建元素。选择无表示忽略处理指令并且不创建元素。 |
下表中描述了 JMSInput 节点的描述属性。
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
简短描述 | 否 | 否 | 节点的简要描述。 | |
详细描述 | 否 | 否 | 描述消息流中节点用途的文本。 |