This topic applies only to the IBM Business Process Manager Advanced configuration.

使用消息传递绑定的建议

消息传递绑定具有某些常用的推荐使用模式。

本部分提供关于设置消息传递绑定中某些较常见选项的指导。该指导适用于大多数消息传递绑定(JMS、通用 JMS、MQ JMS 和 MQ),尽管偶尔也会说明适用于特定绑定。

请求/响应消息

消息可能是单向的(通常称为触发后遗忘消息),也可能是双向的(即请求和响应)。单向消息对于 IBM® Integration Designer 而言足够简单,而请求/响应消息则有一些复杂,因为必须协调响应消息。请记住,在消息传递系统中,响应是异步的;也就是说它可能随时返回。响应与时间无关。请考虑以下情况:消息 A 发送到队列,然后消息 B 发送到同一队列,接着是消息 C 发送到同一队列。 它们都是请求/响应消息。当其中某条消息返回响应时,IBM Integration Designer 如何确定该响应与哪个请求匹配?有关回调队列的以下部分较为完整地回答了此问题,但简而言之,就是相关标识将响应映射到正确的请求。

对于单个应用程序,IBM Integration Designer 可以轻松处理对请求和响应消息的协调操作。 但是,如果有两个或更多个应用程序使用同一队列,问题就会变得比较复杂。在此情况下,可能会返回一个响应,但被错误的应用程序拾取,从而发生关联匹配错误。建议:始终为每个应用程序使用单独的队列。

回调队列

任何服务组件体系结构 (SCA) 服务都可按同步或异步方式访问,而无论服务本身是同步的还是异步的。但是,异步访问消息的 SCA 服务需要回调方法和关联对象。

SCA 服务接口始终是以同步形式定义的。为支持异步模型创建了其他接口。这些接口传递包含异步请求的回调对象。一旦调用的服务完成处理请求,它就会将结果返回到回调对象。相关对象(称为凭单)用于将响应与原始请求相关联。

JMS 导入和导出均使用目标(回调目标)来存储回调信息。这是用于支持 SCA 异步调用的内部 SCA JMS 服务机制,该机制已公开,从而允许性能定制。

当以同步方式调用 JMS 导入时,它会将 JMS 消息置于发送目标上,并且使用请求 JMS 消息的相关方案将回调信息存储在回调目标中。然后,JMS 导入使用消息驱动 Bean (MDB) 来侦听应答消息。当应答消息到达时,MDB 使用其相关标识来检索回调信息。然后,它使用回调信息调用包含响应的回调对象。

JMS 导出使用 MDB 在接收目标上进行侦听。当接收到消息时,它会将请求分派到 SCA 运行时,并且将使用凭单的标识将 JMS 响应信息存储在回调目标中。当调用了回调时,它将使用凭单的标识(如“发送”目标)、相关标识及其输出数据绑定,从回调目标中检索 JMS 响应信息。然后,使用回调的响应自变量和 JMS 响应信息创建响应 JMS 消息,然后将其发送到回复目标。

建议:异步交互样式适用于大多数情况。由于并未阻止调用来等待特定响应,因此如果性能对于您的应用程序很重要,请选择“异步”。但是,如果响应对于您的应用程序具有很高的重要性,那么首选同步交互样式。在此情况下,应用程序将侦听响应,这意味着将阻止调用。使用超时值可以最大程度地减小等待响应的时间过长所带来的影响。

服务质量

服务质量定义服务的通信特征。 我们已在回调队列部分中讨论的一个特征是异步与同步交互样式的对比

事件顺序指定消息是否已排序以及是否需要按相同顺序进行响应。由于选择事件顺序以牺牲性能为代价,因此建议您仅当所返回响应的顺序对应用程序至关重要时才使用此功能。

asyncReliability 属性在 JMS 导出绑定的性能属性选项卡上提供。此属性指定在异步调用导出的目标组件期间 SCA 运行时使用的可靠性。如果设置为 assured(有保证),那么保证消息的送达。如有必要,将持久保存该消息。如果该属性设置为 bestEffort(尽最大努力),那么当系统发生故障时,消息传递可能失败。建议:消息持久性以牺牲性能为代价。如果您的应用程序不需要保证消息送达,您应该将该属性设置为 bestEffort 以改善事务的性能。此属性的缺省值为 assure。

失败消息恢复方式允许绑定管理失败消息的恢复,这是缺省设置。绑定错误作为可以稍后检索的失败事件进行处理。您还可以选择特定于传输的恢复,这没有设置恢复机制。建议:如果您的应用程序不需要绑定来管理失败消息的恢复,或者消息本身并不重要,请选择特定于传输的恢复以改善性能。

如果您要使用 MQ 绑定,那么可以设置一个传输字段,用于确定如何访问队列管理器。选择“客户机”选项表示当您提供主机名、服务器通道和端口号时建立连接。客户机通道定义表 (CCDT) 选择表示在客户机通道定义表中指定了连接值。绑定选择表示使用 Java 本机接口 (JNI) 绑定连接到队列管理器。绑定是共享内存协议,只能与在本地运行的队列管理器一起使用。先绑定再客户机选择表示先尝试绑定连接,如果失败,就建立客户机连接。建议:绑定连接速度最快,但是不如客户机连接安全。