Handle Message Acknowledgment - Mule 4

Anypoint Connector for AMQP provides different acknowledgment configurations.

Automatic Acknowledgment On Success

The AUTO ackMode can be used in the amqp:listener component, causing the automatic ACK of the received message if and only if the flow execution completes successfully. In case that an error occurs during the flow execution that causes it to terminate prematurely, then the message will not be ACKed and redelivery will occur.

Immediate Acknowledgment

Setting the ackMode to IMMEDIATE either in amqp:listener or amqp:consume operations will cause the Message to be automatically ACKed once it is consumed, and prior to any processing of the Message by the application. Having the Message automatically acknowledged once it is received means that the Message won`t be redelivered if any error occurs during the processing of the Message, so application logic like a dead letter queue has to be created to handle errors without losing Messages.

Manual Acknowledgment

As you may expect, the MANUAL ackMode delegates all the responsibility of performing the ACK on the Message to the application logic.

With this configuration, every Message received by either the listener or consume operations will have an ackId available in the MuleMessage attributes which identifies this Message uniquely for a given channel.

The ackId that identifies the Message will then be passed on to the amqp:ack operation:

<flow name="consumerWithManualAck">
    <amqp:consume config-ref="config" queueName="${queueName}" ackMode="MANUAL" />

    <!--Do message processing-->
    <logger message="#[payload]">

    <amqp:ack ackId="#[attributes.ackId]" />

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub
Submit your feedback!
Share your thoughts to help us build the best documentation experience for you!
Take our latest survey!