【问题标题】:Is there a pattern to create Akka-Actors if they're not present?如果 Akka-Actor 不存在,是否有创建它们的模式?
【发布时间】:2016-10-09 05:41:00
【问题描述】:

我目前正在玩 Akka。我的目标是创建一个 Telegram-Bot 并使用单独的 Akka-Actor 处理每次聊天的状态。

我有一个组件从 Telegram 接收消息并将消息转发给相应的参与者。因此,我必须为每个新聊天创建一个演员。 我不想在我的 Telegram-Query-Component 中这样做,因为它不应该打扰演员是否存在。
演员的路径可能类似于clients/client-id。如果我从 Telegram-Component 向路径发送一条消息,它当前会出现在死信队列中。

如果子actor不存在,有没有办法让消息在clients-parent-actor中结束?如果演员不存在,还有其他方法可以自动创建演员吗?
并且:我在 Akka 环境中的“问题”的常见解决方案是什么?有类似注册表的东西,还是默认通过 clients-parent-actor 路由每条消息?
谢谢你的帮助, 迈克尔

【问题讨论】:

    标签: akka


    【解决方案1】:

    Akka 集群就是这样做的——在向他们发送消息时创建参与者。

    我已经创建了 Actor 来路由消息,并在需要时创建收件人。我认为集群之外没有任何东西可以自动执行此操作,但实现起来并不难。

    【讨论】:

    • 我可以对其进行配置,以便它为每个路径创建 1 个参与者,这样我就可以为每个聊天/客户端 ID 设置一个参与者,以维护给定工作流的状态?
    • 具体来说,是集群分片做到了这一点。如果您使用它,您将引用 entities 而不是参与者,因为实体可能会跨节点迁移。每当您向实体发送消息时,它都会自动创建。您应该查阅文档以了解详细信息:doc.akka.io/docs/akka/2.4.7/scala/cluster-sharding.html
    猜你喜欢
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2018-07-02
    相关资源
    最近更新 更多