代码之家  ›  专栏  ›  技术社区  ›  user2351281

如何避免只连接到ActiveMQ中的一个代理?

  •  0
  • user2351281  · 技术社区  · 9 年前

    我们已经使用P2P模型部署了一个代理集群。数据分布在整个集群中。我们的许多消费者使用相同的地址“故障切换:(tcp://ip1:61616,tcp://ip2:61616,tcp://ip3:61616,tcp://ip4:61616,tcp:/ip5:61616)?nested.wireFormat.maxInactivityDuration=1000“ 但最后,我们发现许多消费者会连接同一个经纪人,这使得经纪人的数据不会从其他经纪人那里传输。这种传输占用了大量带宽。 我如何解决平衡问题?消费者如何决定使用哪个经纪人?

    例如,我们有3个代理,所有代理都配置了以下代码段:

    <transportConnectors>       
         <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximum
    Connections=1000&amp;wireFormat.maxFrameSize=104857600" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true" discoveryUri="multicast://default" />
    </transportConnectors>
    
    <networkConnectors>  
        <networkConnector  uri="multicast://default"/>  
    </networkConnectors>
    

    在消费者程序中,我使用“故障切换:(tcp://broker1:61616,tcp://broker2:61616)?nested.wireFormat。maxInactivityDuration=1000”作为代理地址。 我运行了三个使用者进程,但发现这三个进程最终都连接到了broker1IP,这导致broker2和broker3中的数据被传输到broker1以供使用。 这导致巨大的网络负担。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Sundar    9 年前

    我假设您正在寻找代理中消息的负载平衡,您可以使用代理网络来解决问题,请查看此链接以了解更多信息 http://activemq.apache.org/networks-of-brokers.html