SQS 基本
SQS の代表的なパターンやクセをざっくり把握するには以下の記事がよかった。
Amazon SQSを使う前に知っておきたい基本的なこと
キューから取得できるデータの順序や重複について、可視性タイムアウトなど。
Source から受けたあとの処理は非同期に並列並行に動作するのか?
Source (今回想定しているのは SQS )からデータを受けたあと、そのデータを使って何か処理するわけだが、
当然その処理の実行時間は来るデータによって異なる。
時間のかかるデータ処理を行っている間に他のデータ処理も行ってくれるか、
当然そうなるんだろうけど、一応確認したかった。
AWS SQS • Alpakka Documentation
maxBatchSize
と maxBufferSize
という設定項目がある。
Be aware that the SqsSource runs multiple requests to Amazon SQS in parallel. The maximum number of concurrent requests is limited by parallelism = maxBufferSize / maxBatchSize. E.g.: By default maxBatchSize is set to 10 and maxBufferSize is set to 100 so at the maximum, SqsSource will run 10 concurrent requests to Amazon SQS.
SQS から一度に何個のキューをとってくるかなどの設定項目。
maxBufferSize / maxBatchSize
分並列で動く、とある。
デフォルトでは 100/10
で 10 並列らしい。
試してみた
cm-yamasaki-michihiro/akka-streams-sqs-example
をベースにし、
キューにデータを入れるのを0.1秒間隔に改変、
コンシューマーは処理時間がランダムでかかるように改変、
で実行してみると、結果がバラバラででてくるので、並列並行処理されているっぽい。