私は、1回のPOSTリクエストしか処理しないRESTサービスを持っています。私は要求を処理するために俳優を使いたいです。しかし、私は1人の俳優を作って、この俳優を使ってすべてのリクエストを派生させるべきかどうか、または私がリクエストを受けるたびに俳優を創り出すべきかどうかはわかりません。これらの選択の長所と短所は何ですか? また、1つのアクタを作成し、そのアクタを使用してすべてのリクエストを処理すると、どのようにパラレル実行されますか。確かに逐次実行のようです。私もこれを理解したいと思います。Akkaアクタを作成するタイミング
答えて
1つのアクタリクエストは、アクタメールボックス内でキューに入れられ、アクタによって1つずつ処理されます。これは逐次的であり、推薦されません。それは言われている理由
ザッツは
一つの俳優には俳優ではありません。
他のアクタを管理するマネージャを作成します。アクターは非常に安価であるため、問題なくあらゆる要求に対して1つのアクターを作成できます。 db相互作用や他の重い計算を将来的に行い、未来の直接の結果をpipeTo
パターンを使用して処理する俳優に要求します。
俳優は仕事を分けて配布し、集中的な仕事をするために先物を使うためにだけ使う。
@pamuが言ったことに同意します。俳優は安いです。しかし、あなたがシングルトンアクターを使うつもりなら、ステートフルにしてトラブルを引き起こさないように注意してください。
あなたが集中的な仕事をするために先物を使うつもりなら(これはすべきことです)。特定のExecutionContext/Dispatcherを指定してください。グローバルディスパッチャーまたはExecutionContextを使用することは良くありません。
または、それぞれのapiで、その種のエンドポイント/ apiで動作するアクターの数を制御する特定のディスパッチャを作成します。例えば
あなたは「/ /取得取引」
はスレッドだけのこの#を生むだろうディスパッチャを指定しています。このAPIの場合。
この利点は、アプリが使用するスレッド数とリソース数を制御できることです。それは、大量のトラフィックを扱うことになります。これは良い習慣です。
リクエストごとにアクタを作成し、「tell」パターンを使用して、新しく作成したアクタに作業を委任します。使用しているRESTフレームワークが別のアクタ(Spray、Akka-HTTPなど)からのリクエストを完了することをサポートしている場合、この新しいアクタからリクエストを完了できます。このようにして、リクエスト処理担当者は次のリクエストを自由に処理できます。
thisは、是非&の賛否両論を説明するすばらしいリソースを見つけます。& tell-per-request-actorsそれはあなたに役立つことがあります。
- 1. ランダムユーザーインタラクションジェネレータ - Akkaアクタ
- 2. Akka WebSocketで別のアクタを作成できません
- 3. リンクされたすべてのアクタをシャットダウンするカスタムAkkaスーパーバイザを作成する
- 4. Scala/Akka/Guiceは子アクタを動的に注入します
- 5. Akkaテストキットを使用してActorRefから基底アクタを取得
- 6. アクカストリームのアクタからのフローの作成
- 7. タイミングでファイルを作成/削除する
- 8. Akkaのアクタのプロパティを@volatileにする必要がありますか?
- 9. Akka Springインテグレーションでアクタの名前が設定されない
- 10. Akkaのアクタの検索または依存の注入
- 11. 既存ブランチを使用するタイミングと新しいブランチを作成するタイミング
- 12. アクタのアクタを持つストームトポロジビルダー
- 13. なぜこのakka FSMアクタではデータは常に空ですか?ここ
- 14. プールされたAKKAアクタは、自分の子アクタからの送受信のみを保証するにはどうすればよいですか?
- 15. Akka - 反射を使ってアクターを作成する
- 16. akka-http-testkitを使ってテストを作成するには?
- 17. アクタークラスを拡張せずにakkaメッセージリスナーを作成する
- 18. PayPal WebProfileオブジェクト(PHP)を作成して削除するタイミング
- 19. iOS - 子ViewControllerとUIViewサブクラスを作成するタイミングは?
- 20. Angular2タイスクリプトでコンストラクタを作成するタイミングは?ここ
- 21. 新しいsolrコアを作成するタイミングは?
- 22. レールに新しいコントローラを作成するタイミング
- 23. デザイン - 新しい機能を作成するタイミングは?
- 24. マルチモジュールMavenプロジェクトを作成する理由とタイミング
- 25. Yii2 Advancedテンプレートでモジュールを作成するタイミングは?
- 26. ストリーム内でAkkaストリームを作成して開始する方法
- 27. Scala/Akka/Playプロジェクトを作成する方法は?
- 28. akkaでアクター階層を手動で作成する
- 29. プレイフレームワーク2.5.xで「Clock」Akka Actorシステムを作成するには?
- 30. Akkaのアクタが生きていて、イベントストリームに登録されていることを確認する方法