0

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

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

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

在 Artemis ActiveMQ / Red Hat AMQ 集群中,可以用来实现消息排序的上述替代方案有哪些?

4

1 回答 1

1

在集群环境中,一个独占消费者与每个代理上的每个队列相关联,因此根据消息负载平衡配置,每个代理可以有一个消费者接收消息。这会破坏排序。您的生产者和消费者需要在同一个代理实例上以保持排序。

正如您所说,集群消息组功能并不可靠,但它在某些非常具体的用例中可能很有用。另请注意,对于 HA,拥有代理集群是不够的。您需要显式配置 HA(共享存储或复制),否则,如果代理永久失败,则其所有消息都将丢失。

于 2021-02-15T07:18:22.520 回答