AWSインフラストラクチャ上でAWS SQSキューを読み込んでプロセスを実行するプロセスをデーモンとして実行したいとします。AWSインフラストラクチャのデーモンとしてプロセスを実行
私の最初のアプローチは、ECSコンテナサービスに展開されたドッカーコンテナを使用することです。だから私はwhile true loop
になり、数秒間眠っている。これを使用して、処理間のスリープ時間を制御できます。そのため、SQSキューがいっぱいになると、スリープ時間を短縮できます。だから
私はAWS Lambdaをcronジョブとしてスケジュールすることは可能ですが、私はcron時間(sqsサイズの応答の減少または増加)を制御できません。
AWSラムダのアプローチは簡単で、「任意の」インフラストラクチャは必要ありませんが、柔軟性は低くなります。 誰かが別のアプローチを知っていますか?
あなたはラムダスケジューラのものを使うことができます。ラムダハンドラの中では、SQSに20個のメッセージを尋ねることができます(私はそれが一度に得ることができる最大だと思います)。それが完了する前に20のメッセージをすべて取得した場合、aws-sdk(AWS.Lambda.invoke(context.functionName))を使用して自身を再呼び出しします。 20未満のメッセージがあった場合、メッセージを処理した後に正常に終了します。 – idbehold