设置 ActiveMQ 代理网络的正确方法
Correct way to set up ActiveMQ network of brokers
如 中所述,我们有一个由位于不同服务器上的三个代理组成的代理网络。
网络连接器配置如下:
<networkConnectors>
<networkConnector uri="static:(ssl://broker2:61616,ssl://broker3:61616)" networkTTL="5"/>
</networkConnectors>
我们还考虑将以下参数添加到网络连接器,因为我们认为这可能会改善行为(由于对此 blog post 提出建议):
dynamicOnly="true"
decreaseNetworkConsumerPriority="true"
suppressDuplicateQueueSubscriptions="true"
然而,这样做也很可怕,因为我们觉得我们不完全了解现在正在发生的事情,因此无法真正确定这些设置对行为的影响。官方文档对此并不清楚(顺便说一句,在这一点上和其他许多方面都没有)。
更新:
我们想要实现的是,消息尽可能在消息最先到达的地方进行处理。客户端(如另一个 post 所示)通过 Wifi 连接,但可以回退到 4G。在实践中,我们看到他们定期切换网络,因此连接到不同的经纪人。我们想限制通过网络连接器的流量。
这些设置应该能让您获得想要的 'prefer local' 行为:
减少网络消费者优先级=“真”
suppressDuplicateQueueSubscriptions="true"
此外,添加 messagTTL = 4 和 consumerTTL = 1。这允许消息跳转 n + 1 次。 (其中 n 是集群中代理的数量)。此外,consumerTTL = 1 意味着 broker 只会看到来自其直接对等方的消费者,而不会看到多个跃点。
在您的用例中,删除 networkTTL 设置 -- messageTTl 和 consumerTTL 取而代之,让您更好地控制消息跃点和消费者意识。
如
<networkConnectors>
<networkConnector uri="static:(ssl://broker2:61616,ssl://broker3:61616)" networkTTL="5"/>
</networkConnectors>
我们还考虑将以下参数添加到网络连接器,因为我们认为这可能会改善行为(由于对此 blog post 提出建议):
dynamicOnly="true"
decreaseNetworkConsumerPriority="true"
suppressDuplicateQueueSubscriptions="true"
然而,这样做也很可怕,因为我们觉得我们不完全了解现在正在发生的事情,因此无法真正确定这些设置对行为的影响。官方文档对此并不清楚(顺便说一句,在这一点上和其他许多方面都没有)。
更新:
我们想要实现的是,消息尽可能在消息最先到达的地方进行处理。客户端(如另一个 post 所示)通过 Wifi 连接,但可以回退到 4G。在实践中,我们看到他们定期切换网络,因此连接到不同的经纪人。我们想限制通过网络连接器的流量。
这些设置应该能让您获得想要的 'prefer local' 行为:
减少网络消费者优先级=“真” suppressDuplicateQueueSubscriptions="true"
此外,添加 messagTTL = 4 和 consumerTTL = 1。这允许消息跳转 n + 1 次。 (其中 n 是集群中代理的数量)。此外,consumerTTL = 1 意味着 broker 只会看到来自其直接对等方的消费者,而不会看到多个跃点。
在您的用例中,删除 networkTTL 设置 -- messageTTl 和 consumerTTL 取而代之,让您更好地控制消息跃点和消费者意识。