scala – 有没有办法用Akka-Stream获得可预测的演员命名?
我正在使用ActorPublisher作为Akka-Stream Source.我无法弄清楚如何可预测地命名输入actor,以便我可以从我的应用程序的其他部分发送消息.我正在实例化我的源代码:
val src = Source[Task](Props(classOf[TaskListener],this),"task-listener") 我在实现流时获得了ActorRef,但是它的路径是动态生成的,它只使用我提供的名称作为代码生成的以流为中心的命名方案的一部分. 有没有办法让这个前端演员源有一个明确的名称或我是否卡住传递ActorRef? 如果我不能明确地命名它,这是否意味着您不能直接使用Akka-Stream进行远程处理? 编辑:我现在可以找到我的演员使用相对路径,但我仍然需要弄清楚如何命名我的流程,以便我可以理解所讨论的演员的完整路径是什么. 编辑:(下面的akka??版本信息,scala 2.11.6) "com.typesafe.akka" %% "akka-actor" % "2.3.9" "com.typesafe.akka" %% "akka-stream-experimental" % "1.0-M4" 编辑:akka用户谷歌小组的友好伙伴已经启发了我,并建议处理这个问题的正确方法是通过传递runReith()调用本身而不使用.actorSelection()的ActorRef.如果我发现这种状况将来会发生变化,我会更新这个问题.谢谢阅读. 解决方法
解决这个问题的好方法是,添加具有特定路径的Group路由器,然后你可以告诉路由器它可以找到你的演员(路由器).
通过执行此操作,您将分离具体的actor组并通过路由器维护到源池的单一入口点.此外,您将能够在将来识别此路由器群集. 您还可以查看ActorFlowMaterializer – http://doc.akka.io/api/akka-stream-and-http-experimental/1.0-M5/index.html#akka.stream.ActorFlowMaterializer本身.您可以在源代码中找到此评论: /** The `namePrefix` is used as the first part of the names of the actors running * the processing steps. The default `namePrefix` is `"flow"`. The actor names are built up of * `namePrefix-flowNumber-flowStepNumber-stepName`. */ def create(settings: ActorFlowMaterializerSettings,context: ActorRefFactory,namePrefix: String): ActorFlowMaterializer = apply(Option(settings),Option(namePrefix))(context) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |