Acknowledgment of Message Delivery

A durable subscriber can acknowledge consuming a message to its durable in either of two ways.

Automatic Acknowledgment
With automatic acknowledgment, the base library automatically acknowledges the message when the application callback returns. This choice is appropriate when an application’s callback completely processes the inbound message and then returns.
Explicit Acknowledgment
With explicit acknowledgment, the application program must use the acknowledge call to explicitly acknowledge each message. This choice is appropriate when an application’s callback delegates processing of the inbound message to a separate thread. It could also be appropriate if the application must verify the success of each acknowledgment.

To enable explicit acknowledgment, programs pass a property to the subscriber create call. Otherwise, the default behavior is automatic acknowledgment.

Note: Note that the choice between these two mechanisms for acknowledging messages is orthogonal to the administrator’s choice of acknowledgment mode: synchronous versus asynchronous.

Acknowledgment is not relevant with last-value durables.