消息在同一时刻两次传递给 AMQP 消息消费者 (ActiveMQ Artemis)

Messages delivered twice at same instant to AMQP message consumer (ActiveMQ Artemis)

由于其中一个依赖项的回归,我最近不得不从 WF13 回滚到 WF11。

现在我正在尝试让 AMQP 协议在 WildFly 11 的消息系统上运行。我是 运行 具有两个节点的高可用性设置。每个节点在本地都有一个消息消费者。此消息使用者通过 AMQP1 连接。我已将 io.netty 添加为 org/apache/activemq/artemis/protocol/amqp 模块的依赖项并更新了 org/apache/qpid 以使 AMQP 协议工作(另请参见 WFLY-7823)。现在我的 AMQP 消息消费者工作正常,但它似乎总是恰好接收消息两次,而且似乎甚至在同一帧中。这发生在同一个节点上(如果消息不是首先在本地处理,则另一个节点通过网桥接收消息)。因此,在一个节点和一个队列消费者上,我在同一时刻收到每条消息恰好两次,甚至在我为收到的第一条消息发送 ACK/NACK 之前。

我不记得在 WildFly 13 上看到过这个问题。

关于如何通过远程连接器发送消息,是否存在任何已知的回归?也许是 AMQP 协议中的一个问题?或者它可能是 qtip 更新版本的兼容性问题?

对于它的价值,Wildfly 仅使用 ActiveMQ Artemis 来满足他们对 JMS 实现的需求(即 Java EE 的传统部分)。我不认为 Wildfly 对 JMS 以外的其他协议或 API 有任何真正的兴趣。

我的理解是,如果您需要支持多协议消息用例,您应该使用独立代理。我相信这就是为什么 none Artemis 支持的其他协议(例如 AMQP、STOMP、MQTT、OpenWire)在 Wildfly 中启用或有关于如何启用它们的文档(除了偶尔的论坛 post ).

还值得注意的是,Wildfly 11 中有 Artemis 1.5.5,比最新版本(即 2.6.2)晚了 10 个版本左右。在这些版本的 AMQP 实现上已经做了很多工作,所以我认为最好使用独立版本的 Artemis 而不是嵌入 Wildfly 中的 Artemis。