「デッドレターキュー(Dead Letter Queue:DLQ)」とは、
処理に失敗したメッセージを一時的に保存しておくキューのことです。
主にメッセージングサービス(例:Amazon SQS、SNS、Kafka、RabbitMQ など)で使われ、トラブルシューティングや再処理を容易にするために用いられます。
✅ 例えるなら...
「宅配便の再配達コーナー」みたいなものです。
何度も届けようとして失敗した荷物(メッセージ)を、あとでまとめて確認・対応できる場所です。
🔧 具体的な仕組み(Amazon SQSの例)
- 通常のキュー(メインキュー)にメッセージが入る
- コンシューマーがメッセージを処理しようとする
- 処理に失敗(例:アプリケーションエラー)
- 最大再試行回数(例:3回)を超えるとDLQに送られる
💡 なぜ必要?
- 何が失敗しているかを追跡できる
- システム全体が止まるのを防ぐ(失敗メッセージだけ隔離)
- 後で人間やバッチ処理で再処理や手動対応ができる
🛠️ よくある使いどころ
サービス | DLQの使い道 |
---|---|
Amazon SQS | 処理に失敗したメッセージをDLQに移す設定が可能 |
AWS Lambda | 関数の実行に失敗したイベントをDLQへ |
Amazon SNS | 配信に失敗した通知をDLQへ |
📌 注意点
- DLQに入ったメッセージは自動で再処理されません。
必要なら定期的に監視・手動再送する仕組みが必要です。 - 処理失敗の原因がアプリ側なのか、データなのかを分析しやすくなる。
📝 まとめ
項目 | 内容 |
---|---|
DLQとは? | 処理失敗メッセージを隔離しておく場所 |
目的 | エラーハンドリングと可観測性の向上 |
再処理 | 基本的に手動 or 別バッチで行う |
関連AWSサービス | SQS、SNS、Lambda、EventBridge など |