设置经纪人ActiveMQ网络的正确方法

问题描述

this question中所述,我们有一个代理网络,该网络由位于不同服务器上的三个代理组成。 网络连接器的配置如下:

    <networkConnectors>
      <networkConnector uri="static:(ssl://broker2:61616,ssl://broker3:61616)" networkTTL="5"/>
    </networkConnectors>

我们还考虑向网络连接器添加以下参数,因为我们认为这可能会改善行为(由于对此blog post有所建议):

dynamicOnly="true"
decreaseNetworkConsumerPriority="true"
suppressDuplicateQueueSubscriptions="true"

但是,做起来也很恐怖,因为我们觉得我们还不完全了解当前正在发生的事情,因此无法真正确定这些设置对行为的影响。官方文档对此并不十分清楚(目前还没有很多)。

更新:

我们想要实现的是,尽可能多地在消息首次到达的代理上处理消息。客户端(如另一篇文章所示)通过Wifi连接,但回退到4G。实际上,我们看到他们定期切换网络,因此连接到其他代理。我们希望限制网络连接器上的流量。

解决方法

这些设置应该使您“想要本地”行为:

decreaseNetworkConsumerPriority =“ true” preventDuplicateQueueSubscriptions =“ true”

此外,添加messagTTL = 4和consumerTTL =1。这允许消息跳动n + 1次。 (其中n是您群集中的代理数量)。另外,consumerTTL = 1意味着经纪人将仅从其直接对等方看到消费者,而不会看到多跳。

在您的用例中,删除networkTTL设置-messageTTl和consumerTTL替换它,使您可以更好地控制消息跃点和用户意识。