メッセージ肯定応答の処理

AMQP コネクタによってさまざまな肯定応答設定が提供されます。

成功時の自動肯定応答

AUTO ackModeamqp:listener コンポーネントで使用し、​フロー実行が正常に完了した場合のみ​受信されたメッセージの自動肯定応答を実行できます。 フロー実行中にエラーが発生して途中で終了した場合、メッセージは肯定応答されず、再配信が実行されます。

即時の肯定応答

amqp:listener 操作または amqp:consume 操作で ackModeIMMEDIATE に設定すると、メッセージがコンシュームされた場合に自動的に、メッセージがアプリケーションによって処理される前に肯定応答されます。 メッセージが受信された場合に自動的に肯定応答されるということは、メッセージの処理中にエラーが発生しても再配信されないため、メッセージを失わずにエラーを処理するにはデッドレターキューなどのアプリケーションロジックを作成する必要があります。

手動肯定応答

予想どおり、MANUAL ackMode によってメッセージで肯定応答を実行するすべての責任がアプリケーションロジックに委譲されます。

この設定では、listener 操作または consume 操作によって受信されたすべてのメッセージの MuleMessage attributesackId が使用でき、これによって指定されたチャネルに対してこのメッセージが一意に識別されます。

続いて、メッセージを識別する ackIdamqp:ack 操作に渡されます。

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

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

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

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub