処理に時間がかかりすぎる場合、RabbitMQでメッセージを破棄する方法はありますか?RabbitMQ - 処理に時間がかかりすぎる場合はメッセージを破棄します
たとえば、メールキューがあり、コンシューマスクリプトがメールを送信するのに時間がかかりすぎる場合は、メッセージを破棄して(デッドレター交換に入れて)、キュー内の次のアイテムを選択します。
私はx-message-ttl
の承知していますが、メッセージが処理さばかり開始されると、それは無視されるので、それはここでは適用されません。
処理に時間がかかりすぎる場合、RabbitMQでメッセージを破棄する方法はありますか?RabbitMQ - 処理に時間がかかりすぎる場合はメッセージを破棄します
たとえば、メールキューがあり、コンシューマスクリプトがメールを送信するのに時間がかかりすぎる場合は、メッセージを破棄して(デッドレター交換に入れて)、キュー内の次のアイテムを選択します。
私はx-message-ttl
の承知していますが、メッセージが処理さばかり開始されると、それは無視されるので、それはここでは適用されません。
私はあなたがブローカーにしたいことをする方法はないと思う。デッドレター交換にメッセージを移動するには、あなたの状況では不可能と思われるメッセージにreject
またはnack
の返信を送信する必要があります。
たとえば、EmailSender
サービスとEmailGenerator
サービスがあります。 この方法で整理できます:
EmailGenerator
はメールでメッセージを送信します。
EmailSender
を受信します。
EmailSender
は、EmailGenerator
にsent confirmation
メッセージを送信します。
EmailGenerator
これまでに正常に送信された状態を追跡します。 EmailGenerator
がX秒以内に特定の電子メールのメッセージsent confirmation
を受信していない場合は、対応する電子メールメッセージを再送信します。