Message Order in Apache ActiveMQ Artemis Cluster



我正在尝试在Apache Artemis集群中实现消息排序。连接到集群的生产者/消费者实现高可用性。因此,在一个时间点上,将有两个相同应用程序的实例连接到主题或队列。到目前为止,我可以找到以下两种方法可以用来在Red Hat AMQ/Artemis集群中实现排序:

  1. 消息组(根据文档,只有当集群中每个节点有一个消费者时才可靠)
  2. 独占队列(消息顺序仅在单个节点上保留)。

我完全理解使用集群和期望消息排序是相互冲突的需求,但它仍然是我正在从事的项目中实现的需求,因为消费者无法处理处理无序消息的复杂性。

在Artemis ActiveMQ/Red Hat AMQ集群中可以用来实现消息排序的替代方案是什么?

在集群环境中,排他性消费者绑定到每个代理上的每个队列,因此根据消息负载平衡配置,每个代理可以有一个消费者接收消息。这就打破了秩序。您的生产者和消费者需要在同一个代理实例上以保持排序。

正如您所说,集群消息组功能是不可靠的,尽管它在某些非常特定的用例中可能是有用的。还要注意,对于HA来说,仅仅有一组代理是不够的。您需要显式地配置HA(共享存储或复制),否则,如果代理永久失败,则其所有消息将丢失。

最新更新