
SQSの優先順位
ユースケーズ
AWS上にアプリケーションを構築しています。
このアプリケーションはユーザーに対してデータ変換サービスを提供します。
変換するデータを含むファイルは、最初にS3にアップロードされ、次にスポットEC2インスタンス群によって変換されます。
ユーザーは無料ユーザーと有料ユーザーとに分かれるため、有料ユーザーから提出されたファイルは高い優先順位で変換されなければなりません。
このような要件はどのように実装すればよいか
- SQSを利用して有料ユーザーのメッセージ処理を優先的に処理するボーリングをメッセージに設定しもう一方をデフォルト設定とする
解説
SQSを利用して2つのSQSキューを使用して優先度を変更することができます。
Amazon SQSのキューの設定で、優先順位を設定することができます。それによって優先的に処理されるキューとそうではないキューとに振り分けることが可能です。
各キューは別々にポーリングされ、 優先順位の高いキューを最初にポーリングできます。
それによって、SQSを利用して有料ユーザーのメッセージ処理を優先的に処理するポーリングをメッセージに設定し、もう一方をデフォルト設定とすることが可能です。
SQSのキューを複数用意することで優先順位別のキュー(プライオリティキュー、セカンダリキュー)を用意することが可能となります。
またメッセージの遅延送信機能を利用することで処理実行をあえて遅延させることができます。
次のような設定を行います。
1.SQSを用いて優先順位ごとに複数のキューを用意する。
2.処理を急ぐもの(ジョブリクエスト)は、優先順位の高いキューに入れる。
3.優先順位に応じてキューのジョブリクエストを処理するバッチサーバーの台数を用意する。
4.キューには「メッセージの遅延送信」機能がある。それを利用することで、処理開始時間を遅延させることも可能である。