このトピックでは、ApsaraMQ for RabbitMQ のデフォルトのサーバー側コンシューマーリトライポリシーについて説明します。消費失敗後のメッセージの処理方法を説明し、適切な処理ポリシーを選択するのに役立ちます。
コンシューマーリトライフロー
コンシューマーリトライメカニズムは、一時的な障害が発生した際にメッセージの送信または処理を自動的にリトライすることで、システム信頼性とデータ整合性を向上させます。
-
Ready: キュー内にあり、消費を待機しているメッセージ。
-
Unack: コンシューマーが取得したが、まだ確認応答していないメッセージ。これは、メッセージが受信されたものの完全に処理されていないことを意味します。
リトライポリシーのプロパティ
コンシューマーリトライポリシーは、消費タイムアウトと最大配信試行回数という2つの主要なプロパティで構成されます。
消費タイムアウト
消費タイムアウトは、コンシューマーがメッセージを処理するために許容される最大時間です。この時間内にコンシューマーがメッセージを処理しない場合、メッセージは Ready 状態に戻ります。その後、別のコンシューマーがメッセージを取得できます。適切な消費タイムアウトを設定することには、次の利点があります。
-
長時間の停止を回避: 適切な消費タイムアウトは、コンシューマーがメッセージ処理中に長時間一時停止されるのを防ぎます。これにより、メッセージ蓄積が回避され、システム全体のパフォーマンスが向上します。
-
信頼性の高いメッセージ処理を保証: コンシューマーが長時間メッセージを処理できない場合、ApsaraMQ for RabbitMQ はそのメッセージを他のコンシューマーに再配信します。これにより、メッセージが迅速に処理されることが保証されます。
最大配信試行回数
最大配信試行回数は、システムがメッセージをコンシューマーに配信しようとする最大回数です。適切な最大配信試行回数を設定することには、次の利点があります。
-
無限のリトライを回避: 最大配信試行回数を設定することで、メッセージが無期限に再配信されるのを防ぎます。これにより、システムリソースの無駄遣いを回避できます。
-
フェイルオーバー: 最大配信試行回数に達すると、システムはメッセージをデッドレターキューに転送できます。開発者はその後、メッセージを分析して処理できます。
キューの x-delivery-limit プロパティは、最大再配信回数を指定します。最大配信試行回数は x-delivery-limit + 1 に等しくなります。
インスタンスリトライポリシーのパラメーター説明
|
インスタンスタイプ |
サーバーレスインスタンス |
サブスクリプションインスタンス |
||
|
共有 |
専用 |
Enterprise Edition |
Platinum Edition |
|
|
Reserved + Elastic / Pay-by-accumulated usage |
Reserved + Elastic |
|||
|
消費タイムアウト |
最大: 3 時間 デフォルト: 5 分 |
最大: 12 時間 デフォルト: 30 分 |
最大: 3 時間 デフォルト: 5 分 |
最大: 12 時間 デフォルト: 30 分 |
|
最大配信試行回数 |
最大: 16 デフォルト: 16 |
最大: 16 デフォルト: 16 |
最大: 16 デフォルト: 16 |
最大: 64 デフォルト: 16 |
コンシューマーリトライポリシーの変更
-
ApsaraMQ for RabbitMQ コンソールにログインします。
-
[概要] ページの [リソース分布] セクションで、リージョンを選択し、対象のインスタンスをクリックします。
-
インスタンスリトライポリシー
-
インスタンス詳細 ページで、再試行ポリシー タブをクリックし、編集 をクリックします。
-
再試行ポリシーの修正 パネルで、上記の有効値の範囲に基づいて、最大配信回数 と 消費タイムアウト時間 の値を設定します。
-
-
キューリトライポリシー
-
左側のナビゲーションウィンドウで、[キューリスト] をクリックし、対象キューをクリックします。
-
[キュー詳細] ページで、再試行ポリシー タブをクリックし、編集 をクリックします。
-
再試行ポリシーの修正 パネルで、上記の有効値の範囲に基づいて、インスタンス設定を継承しますか、最大配信回数、および 消費タイムアウト時間 の値を設定します。

-
キューがインスタンス設定を継承する場合、そのリトライポリシーはインスタンスレベルの設定によって決定されます。インスタンスレベルの設定が変更されるたびに、キューのリトライポリシーが更新されます。
-
キューがインスタンス設定を継承しない場合、そのリトライポリシーは個別に設定され、インスタンスレベルの設定をオーバーライドします。
-
-
-
-
OK をクリックします。