Simple Message Queue (SMQ、旧称 MNS) では、キューからのメッセージの消費遅延期間を構成できます。このトピックでは、遅延機能の一般的なシナリオ、有効なルール、およびメソッドについて説明します。
シナリオ
シナリオ 1:分散時間指定スケジューリング
分散時間指定スケジューリングのシナリオには、さまざまな 時間の粒度 レベルが必要なタスクが含まれます。たとえば、毎日 5 時にファイルクリーンアップを実行するタスクと、2 分ごとにメッセージプッシュをトリガーするタスクなどです。従来のデータセットベースの時間指定スケジューリングソリューションは、分散シナリオでは複雑で非効率的です。これに対し、SMQ の遅延メッセージを使用すると、複数のタイプの時間トリガーをカプセル化できます。
シナリオ 2:タスクタイムアウト処理
タスクタイムアウト処理に関連する典型的なシナリオは、e コマース決済です。未払いの注文は、すぐにキャンセルされるのではなく、特定の期間未払いのままになるとキャンセルされます。この場合、SMQ の遅延メッセージを使用して、タイムアウトタスクを確認およびトリガーできます。
遅延メッセージに基づくタスクタイムアウト処理には、次の利点があります。
さまざまな 時間の粒度 レベルと簡素化された開発:SMQ の遅延メッセージには、固定された 増分 時間の制限はありません。任意の 時間の粒度 レベルで、ビジネスの 重複排除 なしでタスクをトリガーできます。
高パフォーマンスと スケーラビリティ:SMQ の遅延メッセージは、高い 同時実行性 と スケーラビリティ を提供します。これは、実装が複雑で、スキャン用の API 呼び出しが頻繁に行われるためにパフォーマンスのボトルネックが発生する可能性のある従来のデータベーススキャン方式よりも優れています。
説明
SMQ は、キューレベルとメッセージレベルの遅延機能を提供します。
キューレベルの遅延メッセージ
キューを作成するときに、DelaySeconds パラメーター を指定できます。デフォルトでは、キューに送信されたすべてのメッセージは、この パラメーター で指定された期間が経過した後に消費されます。
単位:秒。
有効な値:0 ~ 604,800 秒(0 秒~ 7 日)。
メッセージレベルの遅延メッセージ
メッセージを作成するときに、DelaySeconds パラメーター を指定できます。メッセージは、この パラメーター で指定された期間が経過した後に消費されます。
単位:秒。
有効な値:0 ~ 604,800 秒(0 秒~ 7 日)。
有効なルール
メッセージの DelaySeconds パラメーター が 0 より大きい場合、メッセージレベルの遅延設定はキューレベルの遅延設定よりも優先されます。この場合、メッセージの DelaySeconds パラメーター を構成すると、その 構成 によってキューレベルの遅延設定が 上書き されます。
次の表に、有効なルールを示します。
シナリオ | メッセージレベルの DelaySeconds パラメーター | キューレベルの DelaySeconds パラメーター | 有効なルール |
シナリオ 1 | 0 より大きい | 0 以上 | メッセージレベルの遅延設定は、キューレベルの遅延設定よりも優先されます。 たとえば、
|
シナリオ 2 | 0 または空 | 0 より大きい | メッセージは、キューの |
ライフサイクル
通常のメッセージと比較して、遅延メッセージにはスケジュール済みの状態が含まれます。
スケジュール済み:メッセージはブローカーに送信されますが、まだ遅延時間の終わりに達していません。この期間中、メッセージはスケジュール済みの状態になり、コンシューマーには表示されません。
メッセージ表示可能:遅延期間が終了すると、メッセージが表示され、コンシューマーが使用できるようになります。
メッセージ非表示:コンシューマーがメッセージを受信した後、メッセージは非表示の状態になります。この場合、他のコンシューマーはメッセージを取得できません。
メッセージ削除済み:コンシューマーがメッセージを正常に消費した後、削除 操作 を呼び出すことによってメッセージを削除できます。
メトリック
SMQ でスケジュールされているメッセージの NumberOfMessagesDelayed パラメーター のメトリックを構成できます。詳細については、「CloudMonitor」のトピックにある「メトリック」セクションをご参照ください。