I'm struggling to create set-up as mentioned in the subject on ActiveMQ Artemis
2.5.0. My key configuration looks as follows (for first node of three):
<acceptors>
<acceptor
name="node-1-universal-plain">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="node-1-connector">tcp://localhost:61616</connector>
<connector name="node-2-connector">tcp://localhost:62616</connector>
<connector name="node-3-connector">tcp://localhost:63616</connector>
</connectors>
<cluster-connections>
<cluster-connection name="showcase-cluster">
<connector-ref>node-1-connector</connector-ref>
<retry-interval>500</retry-interval>
<use-duplicate-detection>true</use-duplicate-detection>
<message-load-balancing>ON_DEMAND</message-load-balancing>
<max-hops>1</max-hops>
<static-connectors>
<connector-ref>node-2-connector</connector-ref>
<connector-ref>node-3-connector</connector-ref>
</static-connectors>
</cluster-connection>
</cluster-connections>
<ha-policy>
<replication>
<colocated>
<backup-port-offset>7</backup-port-offset>
<request-backup>true</request-backup>
<max-backups>2</max-backups>
<backup-request-retries>-1</backup-request-retries>
<backup-request-retry-interval>2000</backup-request-retry-interval>
<master />
<slave />
</colocated>
</replication>
</ha-policy>
Rest of nodes has similar configuration - adjusted cluster connections and
acceptors. I'm deploying it also on three separate hosts (each different from
localhost). What is important I have no discovery groups (no possibility to use
UDP).
So my test is connecting to a cluster using ActiveMQConnectionFactory and URI
"(tcp://node-1:61616,tcp://node-2:62616)?ha=true&reconnectAttempts=-1" (leaving
third to be obtained directly from a cluster) and one thread is producing and
second consuming messages (separate connection used). Test is working fine
(unsurprisingly) even when producer is connected to different nodes of the
cluster. But when one node is stopped then producer / consumer connected to
that node is affected - no send / receive is performed but some messages on the
client side is buffered and flushed when node is again available. I would
expect to automagically switch connection to another node but it is not
happening here. I have tried that previously without HA but with the same
result.
Could you help me determine what I'm doing wrong?
Kind regards
Marcin Stefaniuk
CREDIT SUISSE (POLAND) SP. Z O.O
Solution Architect | Messaging Engineering Warsaw, MITM 47
Atrium 2 | 00-849 Warsaw | Poland
[email protected]<mailto:[email protected]> |
www.credit-suisse.com<http://www.credit-suisse.com/>
===============================================================================
Please access the attached hyperlink for an important electronic communications
disclaimer:
http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
===============================================================================