【发布时间】:2020-11-26 18:50:27
【问题描述】:
阿尔忒弥斯 v2.6.0
-
我们正在 Master-Master 模式下部署 Artemis 的 2 个实例(Instance-1 和 Instance-2)。
-
我们通过在 Artemis 门户上进行验证,确认这两个实例都在一个集群中。
-
我们在两个实例上创建了一个名为 queue-1 的队列。
-
Producer 绑定在 Instance-1 上,Consumer 绑定在 Instance-2 上。
-
案例:1
- 当消费者连接到 Instance-2 并且生产者连接到 Instance-1 时。
- 预期行为: Consumer 应该会收到 Producer 生成的消息。
- 实际行为: 消费者没有收到任何消息。 但是,我们可以看到消息确认计数等于总消息计数。 还观察到另一个名为 $.artemis.internal.sf.{cluster_name}.{node_id} 的队列上的消息计数显示了生产者生成的消息总数。
- 当消费者连接到 Instance-2 并且生产者连接到 Instance-1 时。
-
案例:2
-
当消费者同时连接到 Instance-1 和 Instance-2 时。
-预期行为: 两个实例上的消费者都应该收到消息。
-实际行为 绑定生产者的 Instance-1 上的消费者接收 50% 的消息。 未绑定生产者的 Instance-2 上的消费者未接收任何消息。 但是,我们可以看到消息确认计数等于总消息计数。 还观察到另一个名为 $.artemis.internal.sf.{cluster_name}.{node_id} 的队列上的消息计数显示了 Producer 生成的消息总数的 50%。
-
结论: 似乎,消息被转发到另一个实例,但即使收到了确认,也不会反映在该实例上的队列中。
【问题讨论】:
-
你能提供两个实例的
broker.xml吗?另外,您的消费者是否使用选择器? -
请提供两个实例的日志,包括代理启动。
-
你能在 ActiveMQ Artemis 的最新版本(即 2.16.0)上重现这个吗?
标签: activemq-artemis