1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

maxReceiveCountとは

  • Amazon SQSでメッセージを受信(Receive)しても削除されない場合に、そのメッセージを「処理失敗」と見なすための受信回数の閾値
  • メッセージが指定回数以上受信されても正常に処理されなかった場合、SQSはそのメッセージをデッドレターキュー(DLQ)に移動

  • maxReceiveCountが「2」の場合
    • メッセージが2回受信されても削除されない
    • そのメッセージはデッドレターキューに送信される
    • 「受信回数2回までは通常キューにとどまる」という動作となる
      image.png

解説

(1)メッセージの投入

  • 例えば、メッセージAがSQSキューに送信される
  • メッセージAは通常キューに保持され、処理待ちの状態

(2)1回目の受信

  • 消費者がメッセージAを受信
  • 消費者が処理を試みるが、エラーやタイムアウトで削除しなかった場合:
    メッセージAはVisibility Timeout後、再びキューに現れる

(3)2回目の受信

  • メッセージAが再び消費者に提供される
  • 再び処理を試みるが失敗(削除されない)
  • 受信回数が2に達するが、まだデッドレターキューに移動しない

(4)3回目の受信をトリガー

  • 3回目にメッセージAが消費者に提供されるタイミングで、maxReceiveCountの設定(2)を超えるため:
    メッセージAはデッドレターキューに移動する

その他補足

  • Amazon SQSにデッドレターキューを設定しない場合、maxReceiveCountは適用されない
  • 推奨値はアプリケーションの性質や処理のリトライ要件によるが、一般的には2~5回程度が設定される
  • 「0」は設定できない(エラーになる)

まとめ

  • 処理に失敗したメッセージの無限ループを防ぐ
  • エラー原因を分離・調査できる仕組みを提供
  • システム全体の負荷を軽減し、効率的なリトライ制御を実現
  • AWSの分散型システムにおける信頼性を強化
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?