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

AMQP 用 Anypoint コネクタは、さまざまな肯定応答設定を提供します。

成功時の自動肯定応答

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

即時肯定応答

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

手動肯定応答

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

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

続いて、メッセージを識別する ​ackId​ が ​amqp: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!