访问Scala特征中application.conf中定义的自定义调度程序

时间:2014-09-17 18:28:32

标签: scala akka dispatcher executioncontext

我正在Future内的trait进行一些操作。

trait MyTrait {
  //Future based operations 

}

我希望使用ExecutionContext.Implicits.global中定义的Future,而不是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")

在我的actor中,我可以进行查找以获取执行上下文。

{{1}}

现在确定如何在我的特质中做到这一点。

1 个答案:

答案 0 :(得分: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?")
  }
}

我没有测试它,但我认为这应该有用。