Akka - 根据名称模式将调度程序分配给actor

时间:2014-08-20 12:49:17

标签: configuration akka

我需要根据名称模式为一堆演员分配一个自定义调度程序。 名称模式是这样的: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在代码中完成。

1 个答案:

答案 0 :(得分:2)

docs明确说明你不能:

  

您可以使用星号作为actor路径部分的通配符匹配,   所以你可以指定:/*/sampleActor,这将匹配所有   层次结构中该级别的sampleActor。您也可以使用通配符   在最后一个位置匹配某个级别的所有演员:   /someParent/*。非通配符匹配始终具有更高的优先级   匹配比通配符,因此:/foo/bar被认为比具体更具体   /foo/*并且仅使用最高优先级匹配。 请注意   它不能用于部分匹配部分,如下所示:/foo*/bar,   / f * o / bar等。

我担心你的/OptimizationManager-*被视为部分匹配。