1

私のアプリケーションには、SprayCan を使用する API があります。アプリケーションでは、ブロッキング コードには、特定のリソースごとに個別のディスパッチャがあります。

独自の Dispatcher を使用して構成することにより、API サービスがアプリケーションによってブロックされないように保護する必要がありますか?

また、より大容量のリクエストを処理するために API サービスに Router を使用するのは一般的な方法ですか?

 class MyService extends Actor with HttpService {...}

 val service = system.actorOf(MyService.props(...).withDispatcher(???))
4

1 に答える 1

2

独自の Dispatcher を使用して構成することにより、API サービスがアプリケーションによってブロックされないように保護する必要がありますか?

通常は必要ありません。reference.confそのディスパッチャがニーズを満たすかどうかを確認するために、Spray のデフォルト設定として付属していることを確認してください。そうでない場合は、カスタムのものを提供してください。

また、より大容量のリクエストを処理するために API サービスに Router を使用するのは一般的な方法ですか?

通常、リクエストはルートのブロックを解除するために別のアクタに渡されるかFuture、別のスレッド プールで実行されます。ここで利用可能なすべてのオプションを参照してください.

最後に、サービスをブロックするため、ルート ハンドラーでブロックしないでください。あなたの説明から、ブロッキング コードが aFutureまたは類似の環境で実行されているように思えます。ルート ハンドラーが結果/ブロックを待機しない限り、問題ありません。

于 2015-12-16T02:59:18.527 に答える