【问题标题】:Akka typed sending messages during spawningAkka 在生成期间键入发送消息
【发布时间】:2021-06-17 17:23:47
【问题描述】:

这个问题不言自明。

目前我的 webapp 正在启动时创建演员系统,并使用SpawnProtocol 生成一些顶级演员。此外,启动还可以在启动期间向这些参与者发送一些消息。

创建顶级actor时,akka返回一个CompletionStage,等待actor被创建。

对于这种在角色生成期间接受消息的场景,最好的设计模式是什么?我应该让启动等待角色生成完成,还是隐藏发送的消息并让线程继续?如果要隐藏,请发送一些线程安全且高性能的示例隐藏技术

请注意,我在我的应用程序中使用的是 akka-typed、java 和 spring

【问题讨论】:

    标签: java spring akka akka-actor akka-typed


    【解决方案1】:

    基本想法是使用CompletionStage API 链接调用以引导您的应用程序。

    CompletionStage<ActorRef<Stuff>> actorRefPromise = spawnActorRef();
    
    actorRefPromise.thenApply(actorRef -> bootStrapApp(actorRef))
    

    由于您对引导并不太具体,我假设您需要一个 ActorRef 来引导您的应用程序。在上面的 sn-p spawnActorRef() 中调用 SpawnProtocol 并返回 ActorRefCompletionStage,然后您可以使用 thenApply 链接一个动作,一旦该 ref 可用并使用它传递给其余的您的引导代码。

    【讨论】:

    • 我在 tomcat 服务器上使用 spring webapp。 spring 应用程序创建actorSystem,然后各个spring bean 使用SpawnProtocol 创建actor。我正在寻找的是一种让各个spring bean演员接收消息并缓存它们以在actorRef未来完成时发送的方法。
    • 那些 Spring bean 从哪里获取消息以进行缓存?来自网络电话?他们是服务吗?在http请求处理过程中会发生吗?
    • 应用程序内的预定触发器是我感兴趣的关键部分。但它们也由网络调用触发
    • 调用spawnActorRef().toCompletableFuture().join() 来阻止actor 创建然后将消息传递给它怎么样?
    • 是的,也可以。我在问最好的设计模式是什么?我不太热衷于将块放入应用程序,但还没有找到其他方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2013-04-30
    • 2012-10-09
    • 2023-03-17
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多