1

次のシナリオがあります。

  • 処理が必要なジョブの場合、ジョブの説明を含むメッセージが Amazon SQS メッセージキューに送信されます
  • 私は仕事をしなければならないさまざまなプロセスを持っています

次の条件を満たす必要があります。

  1. 1 つのプロセスがジョブを完了できなかった場合 (そのプロセスが実行されているサーバーがクラッシュしたなどの理由で)、他のプロセスがそのジョブを再び使用できるようにする必要があります。
  2. 1 つのジョブが処理されている間、同じ説明を持つ他のジョブは、最初のジョブが終了するかタイムアウトになるまで待機する必要があります。
  3. システムは、メッセージ キューの長さに応じて簡単に拡張できる必要があります。

(1) を保証するために、Amazon SQS キューが提供するメッセージ ロック機能を使用することを最初に考えましたが、(2) を保証するにはどうすればよいでしょうか? プロセスを職務記述書に割り当てることはオプションですが、(3) はより困難になります。

4

1 に答える 1

1

より長い「VisibilityTimeout」値を設定します。この値は、ジョブを完了するのに通常必要な時間よりも長くなるようにしてください。

このジョブを受信したマシンがジョブを完了できなかった (または適時に完了できなかった) 場合、メッセージは新しいマシンが処理できるようになります。

これは #1 と #2 に対応します。

#3 については、SQS キューのサイズに基づいて自動スケーリング トリガーを設定できると思います。そのため、メッセージがさらにある場合、AWS はそれらを処理するために新しいインスタンスを自動的にスピンアップします。

于 2012-10-05T08:44:21.713 に答える