2016-05-03 20 views
0

私はスプレーベースのHTTPサービスを持っています。私は、このHTTPアプリケーション内で実行されるストリームを持っています。このストリームは多くのI/Oを行うので、別のスレッドプールを使用することにしました。私はAkkaのドキュメントを参照して、スレッドプールを構成できるようにするためにできることを確認しました。私はAkkaのDispatcherコンセプトを見つけました。だから私は私のapplication.confに以下のようにそれを使用しようとしました:私は私のサービスを実行したとき先物を処理するためのAkkaディスパッチャの使用

context.system.dispatchers.lookup("akka.io-dispatcher") 

、私が取得するには、次:私の出演

akka { 
    io-dispatcher { 
    # Dispatcher is the name of the event-based dispatcher 
    type = Dispatcher 
    # What kind of ExecutionService to use 
    executor = "fork-join-executor" 
    # Configuration for the fork join pool 
    fork-join-executor { 
     # Min number of threads to cap factor-based parallelism number to 
     parallelism-min = 2 
     # Parallelism (threads) ... ceil(available processors * factor) 
     parallelism-factor = 2.0 
     # Max number of threads to cap factor-based parallelism number to 
     parallelism-max = 10 
    } 
    # Throughput defines the maximum number of messages to be 
    # processed per actor before the thread jumps to the next actor. 
    # Set to 1 for as fair as possible. 
    throughput = 20 
    } 
} 

として、私は、この設定を検索してみましたエラー:

[ERROR] [05/03/2016 12:59:08.673] [my-app-akka.actor.default-dispatcher-2] [akka://my-app/user/myAppSupervisorActor] Dispatcher [akka.io-dispatcher] not configured 
akka.ConfigurationException: Dispatcher [akka.io-dispatcher] not configured 
    at akka.dispatch.Dispatchers.lookupConfigurator(Dispatchers.scala:99) 
    at akka.dispatch.Dispatchers.lookup(Dispatchers.scala:81) 

私の質問は以下のとおりです。

  1. 私が作成するこのio-dispatcherスレッドプールは、アクターのためだけに使用されるのですか?私の意図は、このスレッドプールをアクタのいずれかによってインスタンス化されるストリームに使用することでした。私はこのスレッドプールをストリームに渡します。

  2. application.confからディスパッチャをロードするだけで、どのようにExecutionContextを作成できますか?私はスレッドプールのための私の構成を読んで、私にExecutionContextを与える特定のライブラリを使用する必要がありますか?

答えて

1

設定が正しい。あなたがする必要があるのは、ロードされた設定ファイルをAkka ActorSystemに渡すことです:

ActorSystem("yourActorSystem", ConfigFactory.load()) 
関連する問題