I’m using Artemis MQ version 2.31.2 and have deployed three MQ servers: Primary Host A, Primary Host B, and Backup Host C.
Host A and Host C form an active-backup pair and are used by consumers; Host B is used by producers.
Repro Steps:
Start producer continuously sending persistent Topic messages
Start consumer continuously consuming messages
Stop MQ service on Host A (trigger failover to Host C)
Stop producer from sending messages
Result: Producer sent 100 messages, but consumer only received 98 messages (2 messages lost)
Both replication and shared-store modes reproduce this issue. Below is the replication configuration:
Producer connection URI:
message.server.uri=failover:(tcp://localhost:61617)?jms.useAsyncSend=true&jms.useCompression=true&timeout=3000&randomize=false&maxReconnectDelay=1000&useExponentialBackOff=false
Consumer connection URI:
message.server.uri=failover:(tcp://localhost:61616,tcp://localhost:61618)?jms.useAsyncSend=true&jms.useCompression=true&timeout=3000&randomize=false&maxReconnectDelay=1000&useExponentialBackOff=false
broker.xml of Primary Host A
tcp://artemis-primary-1:61616
tcp://artemis-primary-1:61616
tcp://artemis-primary-2:61616
tcp://artemis-backup-1:61616
ha-pair
true
1
user
pwd
artemis
ON_DEMAND
1
p1
p2
b3
broker.xml of Backup Host C
tcp://artemis-backup-1:61616
tcp://artemis-primary-1:61616
tcp://artemis-primary-2:61616
tcp://artemis-backup-1:61616
ha-pair
true
true
1
user
pwd
artemis
ON_DEMAND
1
p1
p2
b3