0

スプレー ベースの HTTP サービスがあります。この HTTP アプリケーション内で実行されるストリームがあります。このストリームは多くの I/O を行うため、別のスレッド プールを使用することにしました。Akka のドキュメントを調べて、スレッド プールを構成可能にするために何ができるかを確認しました。Akka で Dispatcher の概念に出くわしました。だから私は私のapplication.confで以下のようにそれを使用しようとしました:

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
  }
}

私のアクターでは、この構成を次のように検索しようとしました。

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

サービスを実行すると、次のエラーが発生します。

[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 スレッド プールは、アクターのみに使用されることを意図したものですか? 私の意図は、アクタの 1 つによってインスタンス化されるストリームにこのスレッド プールを使用することでした。次に、このスレッド プールを自分のストリームに渡します。

  2. application.conf からディスパッチャーをロードするだけで ExecutionContext を作成するにはどうすればよいですか? スレッド プールの構成を読み取り、ExecutionContext を提供する特定のライブラリを使用する必要がありますか?

4

1 に答える 1