面对ActiveMQ Artemis的聚类测试问题



我有2个ActiveMQ Artemis的实例,仅使用命令创建/。Artemis创建Artemis/Server1

/。Artemis创建Artemis/Server2

我正在使用linux ubantu。

这是 for Server1:

  <acceptors>
     <!-- Acceptor for every supported protocol -->
     <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>
  </acceptors>
  <connectors>
     <connector name="netty-connector">tcp://localhost:61616</connector>
     <!-- connector to the server1 -->
     <connector name="server1-connector">tcp://localhost:61617</connector>
  </connectors>
 <cluster-connections>
     <cluster-connection name="my-cluster">
        <connector-ref>netty-connector</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>

这是 broker.xml for Server2:

     <!-- Acceptor for every supported protocol -->
   <acceptor name="artemis">tcp://0.0.0.0:61617?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>
  </acceptors>
  <connectors>
     <connector name="netty-connector">tcp://localhost:61617</connector>
     <!-- connector to the server0 -->
     <connector name="server0-connector">tcp://localhost:61616</connector>
  </connectors>
  <cluster-connections>
     <cluster-connection name="my-cluster">
        <connector-ref>netty-connector</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>server0-connector</connector-ref>
        </static-connectors>
     </cluster-connection>
  </cluster-connections>

同样在server2中,更改bootstrap.xml,更改Web bind bind port

<web bind="http://localhost:8163" path="web">

我正在使用staticclusteredqueueexample和此示例工作文件进行测试。

现在,我正在为我的群集运行Activemq Artemis Jmeter性能,我正在使用Jmeter测试示例,此处

现在,当我与Jmeter一起运行点测试时,我在消费者中给我接近50%的错误率(Jmeter的总报告),

但是,在ubantu系统中我只运行一个节点(server1或server2)的地方,它工作正常,0%错误率(jmeter中的汇总报告)。

您可以帮助我为什么在使用Docker运行多个实例(节点)

时,我会得到50%的错误率(在Jmeter中)

问题在于,您将一个示例(即Jmeter示例)与群集配置(即来自群集静态发现的示例)混合在一起,这确实不兼容。

群集的消息 - 载荷平衡>严格,这意味着无论消费者的存在如何,群集都将在整个群集中均衡。此外,由于严格的消息负载平衡类型,默认的&lt; lt; lt; tementibution-delay>是-1表示发送给集群中其他节点的消息将保留在这些节点上,并且不会根据消费者的需求重新分配。

jmeter示例是用一个节点编写的由于配置,群集中的其他节点。

如果将&lt; message-load-balancing>更改为on_demand,您将不会看到任何错误,因为所有消息都将留在这些节点上,这些消息也会专门发送,这也是消费者连接的地方。

最新更新