【でっどれたーきゅー】
デッドレターキュー とは?
最終更新:
💡 配達不能メッセージの「待合室」
処理に失敗したメッセージや、配信できなかったメッセージを退避させるキュー。原因の調査や、修正後の再処理のためにメッセージを残しておく。
📌 このページのポイント
なぜDLQが必要なの?
DLQに入ったメッセージはどうする?
何回失敗したらDLQに送ればいいの?
DLQのメッセージをさらに別のDLQに送ることはできる?
サービス次第だけど、ふつうはやらないよ。たとえばAzure Service BusではDLQのメッセージをさらにデッドレターにはできない。DLQで処理できないものは、人が調べて対応する段階だと考えよう。長く残す必要があるなら、保存期間の設定やS3などへの保管も検討するといいね。
もっと詳しく知りたい人へ
DLQに入ったメッセージは、ずっと残っているの?
サービスによって違うよ。Amazon SQSの標準キューでは、保存期限は元のキューに入った時刻から数えるので、元のキューに1日いたメッセージは、保存期間4日のDLQでは3日後に消える。だからAWSは、DLQの保存期間を元のキューより長くすることを勧めている(FIFOキューでは移動時に時刻がリセットされる)。一方、Azure Service BusのDLQでは有効期限(TTL)が適用されず、自動では削除されないので、取り出して完了させる運用が必要なんだ。
まとめ:ざっくりこれだけ覚えればOK!
「デッドレターキュー」って出てきたら「処理に失敗したメッセージの退避先キュー」と思えればだいたいOK!
📖 おまけ:英語の意味
「Dead Letter Queue (DLQ)」 = 配達不能メッセージキュー
💬 Dead Letter(届けられない手紙)を集める場所。郵便で宛先不明などのため配達できない郵便物を指す言葉から来ているよ