本主题仅适用于 IBM Business Automation Workflow Advanced 配置。

使用动态 JMS 端点

Draft comment:
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38
Draft comment:
This topic was viewed 27 times since its publication
可以使用 JMS 导入绑定以动态方式调用服务。 您调用的导入在运行时来决定,并且不需要直接连接到组件。 在动态调用期间,您无需在导入绑定中指定所使用的端点。 如果使用调解流组件,那么可以使用一些调解原语来指定目标导入和动态端点地址。 例如,使用“消息元素设置器”调解原语。
图 1. 包含配置为使用服务提供者 1 的未连接导入的调解模块
包含配置为使用服务提供者 1 的未连接导入的调解模块
图 1 显示了包含导入的调解模块,该导入未连接到调解流组件。 此导入已配置为使用服务提供者 1。 通过使用调解流组件,在 SMO 中指定目标导入,并且调用此未连接的导入。 可以改为选择其他导入(如果可用)。 如果在 SMO 中指定目标端点,那么它将覆盖对服务提供者 1 的导入引用,并将其替换为服务提供者 2。 在运行时调用的服务在消息基础上按消息决定。
您可以使用 SMO 结构的 Target 和 AlternateTarget 部分覆盖端点地址或目标导入。 用于启用动态调用的 SMO 部分如下所示:
  • /headers/SMOHeader/Target/address
  • /headers/SMOHeader/Target/@bindingType
  • /headers/SMOHeader/Target/@import
  • /headers/SMOHeader/AlternateTarget/address
  • /headers/SMOHeader/AlternateTarget/@bindingType
  • /headers/SMOHeader/AlternateTarget/@import

address 字段包含请求的动态调用目标服务 URI。 对请求进行路由时,@bindingType 字段将提供更多关于此 URI 的详细信息。 此字段指示动态调用期间使用的绑定类型。 对请求进行路由时,@import 字段将提供用于动态调用的目标导入的名称。

在动态调用中使用的 JMS 端点是根据 JMS URI 标准构造的。 总的来说,此标准要求 JMS URI 具有以下格式:
>>-scheme--:--jms-variant--:--jms-dest--?--parameter-----------><
  • 对于 JMS URI,scheme 必须为 jms
  • jms-variant 提供了有关 JMS 连接的更多信息(例如,通过使用变体 jndi)。
  • jms-dest 标识 JMS 目标对象,并且必须与 jms-variant 相对应。
  • parameter 是由 = 分隔的键值对。唯一受支持的密钥是 jndiConnectionFactoryName。 此键的值必须是连接工厂的 JNDI 名称。 您可以选择是否使用此参数。
下面是有效的 JMS URI 的一个示例:
jms:jndi:MyTargetQueueName?jndiConnectionFactoryName=MyConnectionFactoryName