You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Scott Van Wart <sc...@indosoft.com> on 2018/07/17 17:23:20 UTC

Retry queue message delivery to another node after timeout or connection failure

I can't for the life of me figure out how to get ActiveMQ Artemis to try
another node for message delivery.  I have a domain-managed wildfly cluster
with 3 nodes:

Wildfly 12 (Artemis 1.5.5) and JDK 1.8.0_131 running on Ubuntu 16.04.  I
started with the defaults.  I deployed an EAR with a single MDB that
listens to a durable queue.  I then connect to a node and send a test
message every 250ms.  I can see the messages appearing round-robin on all
nodes (and JMSDeliveryType is PERSISTENT).

The MDB is configured with dups-ok-acknowledge.  I changed some settings
from the defaults that ship with Wildfly for cluster-connection:

check-period=500
connection-ttl=1000
reconnect-attempts=2
call-timeout=1000
call-failover-timeout=500
use-duplicate-detection=false

Other relevant settings:

retry-interval=500
retry-interval-multiplier=1.5
initial-connect-attempts=-1
message-load-balancing=ON_DEMAND
notification-interval=1000
notification-attempts=2

While the test is going on, I unplug the network cable to one of the
nodes.  The other two nodes fail their 3rd node connection in about a
second and start distributing the messages across only the 2 remaining
nodes, which is fine.  But I "lose" about 2-3 messages during this time to
the failed node.  I can leave that failed node unplugged for as long as I
want.  I can even plug the failed node back in and it won't retransmit
these 2-3 messages.  Finally, I restart all the nodes and the 2-3 "lost"
messages are then transmitted (much later) and only to the failed node.

What I really want is for ActiveMQ to quickly retry delivery to another
node.  So if it attempts delivery and the message isn't acknowledged for
750-1000ms, try another node.  I can handle duplicates just fine. Am I
going about this the right way?

Thanks,
  Scott