如何解决ActiveMQ Artemis - 集群代理
我想创建两个代理,它们将相互同步,并且它们的生产者和消费者会看到彼此。
服务器 1 的broker.xml
:
<connectors>
<!-- Connector used to be announced through cluster connections and notifications -->
<connector name="artemis">tcp://localhost:61616</connector>
<!-- connector to the server2 -->
<connector name="server2-connector">tcp://localhost:61617</connector>
</connectors>
<cluster-user>admin</cluster-user>
<cluster-password>admin</cluster-password>
<!-- Clustering configuration -->
<cluster-connections>
<cluster-connection name="my-cluster">
<connector-ref>artemis</connector-ref>
<retry-interval>500</retry-interval>
<use-duplicate-detection>true</use-duplicate-detection>
<message-load-balancing>STRICT</message-load-balancing>
<max-hops>1</max-hops>
<static-connectors>
<connector-ref>server2-connector</connector-ref>
</static-connectors>
</cluster-connection>
</cluster-connections>
server2 的 broker.xml
:
<connectors>
<!-- Connector used to be announced through cluster connections and notifications -->
<connector name="artemis">tcp://localhost:61617</connector>
<!-- connector to the server1 -->
<connector name="server1-connector">tcp://localhost:61616</connector>
</connectors>
<cluster-user>admin</cluster-user>
<cluster-password>admin</cluster-password>
<!-- Clustering configuration -->
<cluster-connections>
<cluster-connection name="my-cluster">
<connector-ref>artemis</connector-ref>
<retry-interval>500</retry-interval>
<use-duplicate-detection>true</use-duplicate-detection>
<message-load-balancing>STRICT</message-load-balancing>
<max-hops>1</max-hops>
<static-connectors>
<connector-ref>server1-connector</connector-ref>
</static-connectors>
</cluster-connection>
</cluster-connections>
从 server1 的 web 控制台创建的消息在 server2 的 web 控制台中不可见。 这个配置有什么问题?
Web 控制台中的状态:
Cluster Info
Lives: 2
Backups: 0
HA Policy: Live Only
解决方法
引用自the official documentation:
注意 Apache ActiveMQ Artemis 不会将消息转发给其他 如果其他节点上没有同名队列,即使 如果此参数设置为 STRICT。
另请注意,集群和高可用性 (HA) 是不同的概念。
,集群中的实时代理不会完全“同步”彼此。您似乎期望集群中每个实时代理的控制台将报告与集群中所有其他实时代理相同的消息统计信息。然而,这不是它的工作原理。
集群中的每个实时代理都“拥有”某些消息,并且每个代理都有一组独立的队列。因此,每个代理的 Web 控制台将显示该特定代理的唯一统计信息。需要明确的是,消息可以移动从一个代理到另一个代理,以便连接到集群中一个实时代理的消费者可能会使用发送到集群中不同实时代理的消息,但这些消息只是被移动了不得以任何方式复制或转载。
我建议您查看 cluster documentation,因为它提供了有关所有这些工作原理的更多详细信息。
如果您想将一个代理与另一个代理“同步”,以便在代理失败时另一个代理将接管并拥有所有相同的消息数据,那么您应该使用一对实时/备份代理配置高可用性。有关详细信息,请参阅 HA documentation。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。