Queue up messages internally until it can successfully call basicPublish.
Notify the caller using a robust ID (not delivery tag) when the message is confirmed by rabbit.
This is a layer above the existing abstraction in vertx-rabbitmq-client, but it's such common boiler plate (and non-trivial) that adding to vertx-rabbitmq-client would be useful.
Note that I am aiming to guarantee at least once delivery, there will be failure modes that result in messages being delivered more than once.
Also, clients that don't need at least once delivery guarantees should not use this publisher.
A reliable publisher should:
Note that I am aiming to guarantee at least once delivery, there will be failure modes that result in messages being delivered more than once. Also, clients that don't need at least once delivery guarantees should not use this publisher.