Show Table of Contents
20.7.4. 群集分组
群集分组遵循相对于普通消息分组的不同途径。在群集里,具有专有组 ID 的消息组可以达到任何节点。对于节点来说,确定哪个组 ID 绑定到哪个节点上的哪个消费者是很重要的。每个节点都负责将消息正确路由至有客户处理这些组 ID 的节点,而不管消息组默认到达什么地方。
这种情况可以用分组处理程序来解决。每个节点有一个分组处理程序,且这个分组处理程序(以及其他处理程序)负责将消息组路由至正确的节点。目前有两种类型的分组处理程序:
local 和 remote。
Local 处理程序负责决定消息组应该使用的路由。Remote 处理程序与 Local 处理程序通讯并响应地进行工作。每个群集应该选取一个专有节点运行 Local 处理程序,而其他节点则运行 Remote 处理程序。
您可以在服务器配置文件(
standalone.xml 和 domain.xml)里配置 "local" 和 "remote" 组处理程序:
<grouping-handler name="my-grouping-handler"> <type>LOCAL</type> <address>jms</address> <timeout>5000</timeout> </grouping-handler> <grouping-handler name="my-grouping-handler"> <type>REMOTE</type> <address>jms</address> <timeout>5000</timeout> </grouping-handler>"timeout" 属性确保路由决定在指定时间内快速完成。如果在这段时间内没有作出决定,异常将被抛出。
最初接收消息组的节点将根据常规的群集路由条件(round-robin 队列可用性)作出路由决定。节点不同的组处理程序将建议这个决定,如果它们接受建议,然后再将这些消息转发到提议的队列。
如果组处理程序拒绝这个建议,节点会建议其他路由。其他节点会遵循套件并将消息组转发到所选的队列。在消息到达队列后,它将锁定队列上的某个客户。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.