gpt4 book ai didi

multithreading - 处理Akka actor的receive方法中的异步调用的最佳方法

转载 作者:行者123 更新时间:2023-12-04 04:33:53 26 4
gpt4 key购买 nike

我正在尝试将数据持久保存到数据库中。我的persist方法是异步的。

class MyActor(persistenceFactory:PersistenceFactory) extends Actor {
def receive: Receive = {
case record: Record =>
// this method is asynchronous, immediate return Future[Int]
persistenceFactory.persist(record)
}
}

当应用程序在增加的负载下运行时,瓶颈就在这里,要么是我们内存不足,要么是没有可用的线程。

那么,在Akka actor的receive方法内部处理异步调用的最佳方法是什么?

最佳答案

这是一个很好的示例,说明何时应该让一个 Actor 创建另一个 Actor 来处理交互。从本质上讲,流程是这样的,并且如果可以使您更轻松,也可以使用FSM(有限状态机)。

  • 父 Actor 收到消息
  • 父 Actor 创建子事务 Actor
  • 父级向 child 发送原始消息
  • 子级调用异步方法并存储Future
  • Child使用begin()更改其行为,以等待将来完成。有很多方法可以做到这一点,包括FSM。
  • schedules periodic messages to itself检查将来的
  • child 的新行为会检查Future是否在每次接收
  • 时完成
  • 当Future完成时, child 可以将结果与父或原始发件人进行答复(如果 parent 与原始发件人一起发送了该消息)。
  • 关于multithreading - 处理Akka actor的receive方法中的异步调用的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38945950/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com