当前位置: 首页 > 知识库问答 >
问题:

有没有办法通过Akka Stream获得可预测的演员命名?

姜博
2023-03-14

我正在使用ActorPublisher作为Akka-StreamSource。我不知道如何可预测地命名输入参与者,以便我可以从应用程序的其他部分向其发送消息。我正在像这样实例化我的源:

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用户google group的友好人士给了我启发,并建议正确的处理方法是传递ActorRef,它是由runWith()调用自身而产生的,而不是使用。actorSelection()。如果我发现这种情况在未来发生变化,我会更新这个问题。谢谢你的阅读。

共有1个答案

廖鸿达
2023-03-14

解决这个问题的好方法是,添加具有特定路径的组路由器,然后您可以告诉路由器在哪里可以找到您的参与者(路由对象)。

通过这样做,您将解耦您的具体演员组,并通过路由器维护到源池的单点入口。此外,你将能够使这个路由器集群在未来的意识。

您还可以查看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)
 类似资料:
  • 问题内容: 现在我正在做: 有没有更有效的方法直接从Find(或其他搜索功能)中获取带有用户名的slice,而没有struct和range循环? 问题答案: MongoDB的结果始终是文档列表。因此,如果要获取值列表,则必须像以前一样手动将其转换。 使用自定义类型(源自) 另外请注意,如果您要创建自己的类型(从派生),则可以覆盖其取消编组逻辑,并仅从文档中“提取” 。 它看起来像这样: 然后将用户

  • 我用Java编写了一个程序,我有以下问题: 在课程的后期,我再次需要这些学生。我可以这样做: 但是我没有学生的人数。有没有办法让他们的名字,这是在类学生?

  • 因为我是在中配置序列化程序的,所以我不能在构造函数参数中传递。

  • 问题内容: 特别是,我想做这样的事情: 哦,我想这样做而不必修改pom文件或设置任何环境变量。 问题答案: 我认为最适合您。参见此处:http : //maven.apache.org/configure.html 在Unix中: 添加环境变量以指定JVM属性,例如。此环境变量可用于向Maven提供其他选项。 在Win中,您需要通过对话框设置环境变量 通过打开系统属性()添加…环境变量,…在同一对

  • 问题内容: 即时消息插件可以接收IM消息,例如“ 在10秒钟内构建XYZ”,并将作业设置为在10秒内运行。它通过Java API来调度Job [0]。 我想知道是否可以通过REST API [1] 传递一些魔术参数,使我能够以相同的方式“延迟”作业? 谢谢。 [0] - https://github.com/jenkinsci/instant-messaging- plugin/blob/mast

  • 问题内容: 使用方法是否有获取功能的方法?使用实际表单元格时可以使用该方法吗? 特别是我需要一些“单元格”来跨越多列。 真实表是不可能的,因为我在 每行 布局中使用 表单 ,因此无法作为真实表进行验证。 问题答案: 不,您不能将colspan或rowpan添加到display:table-cell。这是表格单元功能的限制之一! 您可以在此参考链接中查看限制 如果要将COLSPAN功能引入表单元,则