我有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运行多个实例(节点)
问题在于,您将一个示例(即Jmeter示例)与群集配置(即来自群集静态发现的示例)混合在一起,这确实不兼容。
群集的消息 - 载荷平衡>严格,这意味着无论消费者的存在如何,群集都将在整个群集中均衡。此外,由于严格的消息负载平衡类型,默认的&lt; lt; lt; tementibution-delay>是-1表示发送给集群中其他节点的消息将保留在这些节点上,并且不会根据消费者的需求重新分配。
jmeter示例是用一个节点编写的由于配置,群集中的其他节点。
如果将&lt; message-load-balancing>更改为on_demand,您将不会看到任何错误,因为所有消息都将留在这些节点上,这些消息也会专门发送,这也是消费者连接的地方。