${build.shortName} 消息传递集群允许将 ${build.shortName} 消息传递服务器会被分组在一起以共享消息处理负载。集群中的每个活跃节点都是活跃的 ${build.shortName} 消息传递服务器,用于管理自己的消息并处理其自身连接。

集群由每个在 ${build.shortName} 配置文件中声明到其他节点的集群节点形成。当节点形成集群与另一个节点的连接时,它会在内部在自身和其他节点之间创建一个核心 api 连接。这会在评分后面实现;您不必为每个节点声明明确的 api。集群连接允许消息在集群节点之间流动,以平衡负载。

需要获得与集群相关地完整文档,请参阅 集群概述

本节包含以下功能的配置:

广播组

广播组代表通过网络的服务器广播连接器。一个连接器定义了一个客户端或其他服务器可以连接该服务器的方法。

广播组会获取一组连接器并在网络中广播它们。根据集群所配置使用哪个广播技术,它将使用 UDP 或 JGroups 来广播连接器对信息。

广播组在服务器配置的 messaging-activemq 子系统中定义。每个 ${build.shortName} 消息传递服务器可以有多个广播组。

发现组(discovery group)

广播组定义了连接器信息如何从服务器广播,而发现组定义了接器信息如何从广播端点接收,例如,一个 UDP 多播地址或 JGroup 信道。

发现组维护一个连接器列表,每个连接器用于由一个不同的服务器发送的每个广播。由于它从特定服务器接收广播端点上的广播,它会更新该服务器列表列表中的条目。如果它在一定时间内尚未从特定服务器收到广播,会从列表中删除该服务器的条目。

集群连接

集群连接将服务器分组到集群中,以便集群节点间可以对信息进行负载平衡。集群连接在 ${build.shortName} 服务器配置中定义,使用 cluster-connection 元素。每个 ${build.shortName} 消息传递服务器可以定义零个或多个集群连接。

组处理器

在集群中,具有特定组 id 的消息组可以到达任何节点。对于一个节点,决定哪个组 id 绑定到哪个节点中的哪个消费者非常重要。每个节点都需要负责正确地将消息组路由到带有处理这些 ID 的消费者所在的节点,无论消息组默认到达的位置。 当带有给定组 id 的消息被发送到连接到集群中的一个给定节点的特定消费者后,即使消费者断开连接,这些消息也不会发送到另一个节点。

这个情况可以通过一个组处理器(grouping handler)解决。每个节点都有一个组处理器,该组处理器(与其他处理程序一起)负责将消息组路由到正确的节点。

JMS 桥

API 的功能是处理来自一个目标的消息,并将其转发到另外一个地址(通常是一个不同的 ${build.shortName} 消息服务器。

源服务器和目标服务器不必处于同一个集群,使用网桥可以可靠地把消息从一个集群发送到另外一个集群(例如,在一个 WAN 中的集群中发送),或在互联网中(网络连接可能并不稳定)发送。

该API具有内置的抗失败功能,果目标服务器连接丢失(例如,网络出现故障),该 API 尝试重试连接到目标,直到目标可以访问到为止。当它重新在线后,将恢复正常的操作。

网桥是将两个独立的 ${build.shortName} 消息传递服务器连接在一起的一种方法。使用核心 api 源和目标服务器必须是 ${build.shortName} 消息传递服务器。