Acknowledgment Mode

Durable subscribers acknowledge each message as they process it. However, the client library can transmit acknowledgements to the cluster in either of two modes: synchronous or asynchronous.

Synchronous
Each time the application program acknowledges a message, the client library immediately communicates the acknowledgment to the cluster, and waits for the cluster to confirm that it has safely recorded that acknowledgment.
Asynchronous
The client library gathers batches of acknowledgements, and communicates the batches to the cluster. (The application does not receive confirmation that the cluster has safely recorded the batch of acknowledgements.)

In some situations, batching can improve throughput and latency performance. However, after application failover, durable subscribers could receive duplicate delivery of messages that they have already acknowledged (because the cluster never received the most recent batch of acknowledgements).

Note: Acknowledgment mode as described here is orthogonal to the developer’s choice between automatic acknowledgment versus an explicit acknowledge call.

Acknowledgment mode does not apply to last-value durables.