【发布时间】:2015-04-06 17:53:47
【问题描述】:
我使用 ActorPublisher 作为 Akka-Stream Source。我不知道如何以可预测的方式命名输入参与者,以便我可以从我的应用程序的其他部分向它发送消息。我正在像这样实例化我的源代码:
val src = Source[Task](Props(classOf[TaskListener], this), "task-listener")
当我实现流时,我得到一个ActorRef,但它的路径是动态生成的,它只使用我提供的名称作为代码生成的以流为中心的命名方案的一部分。
有什么方法可以让这个前端演员源有一个明确的名字,还是我一直在传递 ActorRef ?
如果我不能明确命名它,这是否意味着您不能直接使用 Akka-Stream 进行远程处理?
编辑:我现在可以使用相对路径找到我的演员,但我仍然需要弄清楚如何命名我的Flow,这样我才能了解相关演员的完整路径将是什么是。
编辑:(下面的 akka 版本信息,scala 2.11.6)
"com.typesafe.akka" %% "akka-actor" % "2.3.9"
"com.typesafe.akka" %% "akka-stream-experimental" % "1.0-M4"
编辑: akka-user google 小组的友好人士启发了我,并建议处理此问题的正确方法是传递由 @ 产生的 ActorRef 987654328@ 调用自身而不使用.actorSelection()。如果我发现这种情况在未来发生变化,我会更新这个问题。感谢阅读。
【问题讨论】:
-
我知道 3 年多过去了,但你能否分享一下你最后处理这个问题的方式,因为我在做同样的任务
-
@YoZH 我使用
Source.actorPublisher创建了一个Source,然后创建了一个Flow,我在其上调用了flow.runWith(src)——但该方法已被弃用。希望您现在已经解决了这个问题。
标签: scala akka akka-stream