聚集是生成和扇出从单条输入消息派生出的相关请求,并扇入相应的应答以产生单个、聚集的应答消息。
消息流接收到一个表示相关请求项的集合的初始请求,该初始请求被分割为适当个数的独立请求以满足初始请求的子任务。此过程称为扇出,且由包含聚集节点的消息流提供。
来自子任务的应答组合且合并为返回到原始请求者(或另一个目标应用程序)的单个应答以表明处理的完成。此过程称为扇入,且也由包含聚集节点的消息流提供。
您可以通过使用任何受支持的协议将消息从连接到代理的客户机应用程序发送到消息流来启动聚集;聚集的响应也可以通过使用所有这些协议发送到客户机应用程序。扇出消息流发出的消息和扇入消息流接收的响应必须是请求/应答消息。因此,您限制为使用 WebSphere MQ 企业传输方式(将消息发送到 MQInput 和 MQOutput 节点,以及从这些节点接收消息)进行连接的客户机应用程序,或者限制为使用其他受用户定义的输入和输出节点(符合请求/应答通信模型)支持的协议的客户机。
WebSphere Message Broker 提供了三个支持聚集的消息流节点:
当您在您的消息流中包含这些节点时,在消息流中并行地发出多个扇出请求。这与消息流的标准操作相对应,在标准操作中每个节点按顺序执行它的处理。
您也可以使用这些节点向代理环境之外的应用程序发出请求;消息可异步地发送到外部的应用程序或服务,从这些应用程序检索响应,且组合这些响应以向原始的请求消息提供单个响应。
这些节点也提供了改善响应时间的机会,因为可并行地执行慢响应,不必依次逐个执行每个慢响应。如果子任务可各自处理,且不必作为单个工作单元的一部分处理,可使用独立的消息流处理这些子任务。
您可以通过发出子任务请求到另一个应用程序(例如,使用 HTTPRequest 节点)并在 LocalEnvironment 中记录每个请求的结果,在不使用聚集节点的情况下设计和配置提供类似功能的消息流。每个子任务完成后,您可以合并来自 Compute 节点中的 LocalEnvironment 的结果,并创建用于传播到目标应用程序的组合响应消息。如果您这样做,所有子任务按顺序执行,且不能提供通过使用聚集节点您可以完成的并行操作的性能优势。
聚集样本和 航空公司订票样本中提供了使用聚集节点的聚集流的示例。聚集样本说明了简单四向聚集,而 Airline 预订样本则模拟了与航线预订服务相关的请求,并描述了与聚集流关联的技术。
在 WebSphere Message Broker 的前发行版中,聚集使用代理数据库中的表来持续聚集请求。从 WebSphere
Business Integration Message Broker V5.0 起,您可以使用 WebSphere MQ。聚集节点的外部函数未更改,但是您可以配置执行组以使用 WebSphere MQ 队列而不是数据库表来存储聚集。用这种方法使用 WebSphere MQ 提高了性能,并且在不需要持久的聚集请求时,聚集可以以非持久方式运行。有关如何迁移和配置执行组以使用 WebSphere MQ 的详细信息,请参阅使用 WebSphere MQ 将状态存储在聚集节点中。
当您从使用数据库表更改为使用 WebSphere MQ 来存储聚集状态时,现有的聚集没有迁移功能,因此,确保没有未完成的聚集十分重要,因为这些聚集是不能迁移的。
新的聚集节点使用 WebSphere MQ 消息到期来管理消息超时。对于要使用的消息到期,必须浏览这些消息队列。聚集节点自动浏览这些队列以确保能够处理这些到期消息。在 z/OS 上,您可以配置 WebSphere MQ 以运行 scavenger 进程,该进程代替聚集节点执行浏览操作。要启用 scavenger,将代理的队列管理器属性 EXPRYINT 设置成 5 秒。
如果未设置 EXPRYINT 或设置成比 10 秒大的值,则聚集还原以自动浏览聚集队列。