我需要根据名称模式为一堆演员分配一个自定义调度程序。
名称模式是这样的:OptimizationManager-{id}
其中id是变量。我尝试使用与ActorSelection相同的方法,我可以使用通配符*
:
akka {
actor {
optimization-manager-dispatcher {
type = Dispatcher
executor = "fork-join-executor"
}
deployment {
"/OptimizationManager-*" {
dispatcher = akka.actor.optimization-manager-dispatcher
}
}
}
}
但它不起作用。在日志中我仍然看到OptimizatinManagers使用默认调度程序。是否有可能在配置文件中实现我所需要的?我知道最后的办法是使用Props.withDispatcher
在代码中完成。
答案 0 :(得分:2)
docs明确说明你不能:
您可以使用星号作为actor路径部分的通配符匹配, 所以你可以指定:
/*/sampleActor
,这将匹配所有 层次结构中该级别的sampleActor。您也可以使用通配符 在最后一个位置匹配某个级别的所有演员:/someParent/*
。非通配符匹配始终具有更高的优先级 匹配比通配符,因此:/foo/bar
被认为比具体更具体/foo/*
并且仅使用最高优先级匹配。 请注意 它不能用于部分匹配部分,如下所示:/foo*/bar
, / f * o / bar等。
我担心你的/OptimizationManager-*
被视为部分匹配。