0

我正在对Futures 内的 s进行一些操作trait

trait MyTrait {
  //Future based operations 

}

我不想使用ExecutionContext.Implicits.globalfor my Future,而是想使用在 my 中定义的一个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 

}

然后实现 trait 的代码应该确保提供 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 回答