0

Future内の sに対していくつかの操作を行っていtraitます。

trait MyTrait {
  //Future based operations 

}

ExecutionContext.Implicits.globalfor myを使用する代わりに、 myFutureで定義されているものを使用したいと考えていapplication.confます。

akka {
  my-batch-dispatcher {
    type = Dispatcher
    executor = "fork-join-executor"
    fork-join-executor {
      parallelism-min = 10
      parallelism-factor = 2.0
      parallelism-max = 10
    }
    throughput = 20
  }
}

アクター内でルックアップを実行して、実行コンテキストを取得できます。

  implicit val ec = context.system.dispatchers.lookup("akka.my-batch-dispatcher")

私の特性の中でこれを行う方法を確認してください。

4

1 に答える 1

1

トレイトの抽象的な暗黙の値として追加できます。

trait MyTrait {
  implicit val ec: ExecutionContext
  //Future based operations 

}

次に、トレイトを実装するコードは必ず ExecutionContext を提供する必要があります。それがアクターの場合、次のようなことができます。

class MyActor extends Actor with MyTrait {
  implicit val ec = context.system.dispatchers.lookup("akka.my-batch-dispatcher")
  def receive = {
    case "hello" => println("hello back at you")
    case _       => println("huh?")
  }
}

私はそれをテストしませんでしたが、これはうまくいくはずだと思います。

于 2014-09-17T20:55:11.647 に答える