FIFOキューの先頭メッセージ詰まりで後続が処理されないハマりどころ
AWS
デバッグ
メッセージング
SQS等のFIFOキューでは、先頭メッセージの処理が失敗・スキップ条件に該当して進めなくなると、後続メッセージも一切処理されなくなる(head-of-line blocking)。"workerが起動しない/動かない"ように見えても、実際にはworkerは正常起動していて先頭の古いメッセージで詰まっているケースがある。
切り分け手順:
- キューの可視/非可視メッセージ数を確認(ApproximateNumberOfMessages / NotVisible)
- worker側の起動ログを実際に取得し、起動できているか受信後の処理で落ちているかを分ける
- 先頭メッセージの処理対象が既に完了済み等で弾かれていないか確認
ローカル検証環境で詰まりを解消するだけなら、purge-queueでキューを空にするのが最速。本番では先頭メッセージのエラーハンドリング(DLQ送りやスキップ)の設計が必要。