Hi.

I’m trying to implement ONLY ONCE delivery with Artemis (tested on both 2.19.1 
and 2.22.0). 
I have HA cluster with primary node A and replica node B. And a client. All of 
them are on different servers.
The scenario:

- Client connects to primary node A and start sending messages
- Network between A and B is switching off
- Network between A and client is switching off
- Client failover to B and continue sending messages

The client connects with following parameters:
- reconnectAttempts = -1
- confirmationWindowSize = -1

The client is transactional.
The client adds unique _AMQ_DUPL_ID to each message before sending.
In case of error the client continues trying to send message in same session 
and with same _AMQ_DUPL_ID.
In case of ActiveMQDuplicateIdException the client stops retrying and continue 
sending pending messages.

As a result I am loosing one or more messages that where send just before 
failover (usually I receive ActiveMQTransactionOutcomeUnknownException).

As I understand that is due to async replication that may not receive one or 
more message before network loos while client will receive ACK from primary 
server.

Is it an expected behavior or am I missing something?

Regards
Iliya Grushevskiy




Reply via email to