With failover - with a failure before a reply is received to a send or a transaction commit, the send or transaction will be replayed and will be a duplicate.
The transportConnector should know that recovery/reconnection has happened and should enforce duplicate suppression based on obtaining the last producer sequence number from the store.
Currently, duplicate suppression happens at the jdbc message store add, amq store reference store etc... it is not consistent and it is abased on a suitable audit window which may be non deterministic. Would be best to be fully deterministic and consistent (as in a single persistence adapter api)
To make this perform, a transportConnection needs to be flagged as a reconnect which can precipitate the duplicate suppression, possibly needing a wireformat update. This flag would also help with unmatched acks after failover but maybe that flag can be in an ack...
This is relevant both when the broker is restarted or when a connection is dropped.
related issue with relevant test : https://issues.apache.org/activemq/browse/AMQ-2540