私はJavaから来ており、スレッドプールに支えられたRunnablesを送信します。ExecutorServiceJavaでは、スレッドプールのサイズに制限を設定する方法は非常に明確です。
Scalaアクターの使用に興味がありますが、並行性を制限する方法がわかりません。
仮に、「ジョブ」を受け入れるWebサービスを作成しているとしましょう。ジョブはPOSTリクエストとともに送信されます。サービスでジョブをキューに入れてすぐに返すように202 Acceptedします。つまり、ジョブは非同期で処理されます。
アクターを使用してキュー内のジョブを処理している場合、処理される同時ジョブの数を制限するにはどうすればよいですか?
これに取り組むためのいくつかの異なる方法を考えることができます。コミュニティのベストプラクティスがあるのか、少なくとも、Scalaの世界である程度標準的な明確に確立されたアプローチがあるのか疑問に思います。
私が考えたアプローチの1つは、ジョブキューとジョブ処理アクターを管理する単一のコーディネーターアクターを持つことです。単純なintフィールドを使用して、現在処理されているジョブの数を追跡できると思います。ただし、エラーが発生したときに追跡して数を減らすなど、そのアプローチにはいくつかの落とし穴があると確信しています。だから私は、Scalaがこれに対してもっと単純な、あるいはもっとカプセル化されたアプローチをすでに提供しているのだろうかと思っています。
ところで、私は少し前にこの質問をしようとしましたが、私はそれをひどく尋ねました。
ありがとう!