消息同时两次发送给AMQP消息使用者(ActiveMQ Artemis)

时间:2018-08-12 10:23:42

标签: wildfly activemq-artemis wildfly-11

由于其中一个依赖项的回归,我最近不得不从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版本存在兼容性问题?

1 个答案:

答案 0 :(得分:0)

出于其价值,Wildfly仅使用ActiveMQ Artemis来满足他们对JMS实现(即Java EE的传统部分)的需求。我相信Wildfly对JMS之外的其他协议或API都没有真正的兴趣。

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

值得注意的是,Wildfly 11包含Artemis 1.5.5,比最新版本(即2.6.2)落后10个左右。在这些版本中,有关AMQP实施的工作很多,因此我认为最好使用独立版本的Artemis而不是嵌入在Wildfly中的Artemis。