我正在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}}
现在确定如何在我的特质中做到这一点。
答案 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?")
}
}
我没有测试它,但我认为这应该有用。