Akka演员和消息处理

乔山

我有一个ActorSystem,其中创建了一个顶级演员,在这个顶级演员中,我创建了几个子演员。到目前为止很好!

然后,我要做的是将这些子actor暴露给我的Application控制器(在Play应用程序中),这样我就可以直接从Play控制器中通过管道传递针对相应子actor的消息。这是一个好习惯吗,还是我应该始终通过主管将消息通过管道传递给子演员?在代码中,如下所示:

class Application extends Controller with MyActors {

  def createUser = { request =>
    val user: User = ... get the User from the request body
    userActor ! user
  }
}

这是我的Supervisor Actor外观,它由Play应用程序生命周期插件控制:

class SupervisorActor extends Actor with ActorLogging {

  val allActors = MyActors(context.system.settings.config, context)

  context watch allActors.userActor

  // TODO: what should we do in this SupervisorActor?
  def receive = {
    case Terminated(terminate) => context stop self
    case _ =>
  }
}

然后,我将此MyActors注入到Play Application控制器中。所以我的问题是,这是一个好方法吗?子角色直接从外界接收消息,而消息不必通过主管角色。这是一个好方法。这种方法可能会遇到什么问题?

拉蒙·J·罗梅罗(RamónJ Romero)和维吉尔(Vigil)

您的方法天生就没有坏处或好处。有些问题要求与儿童Actor直接沟通,有些要求使用主管。

我想说,如果需要某种路由逻辑,那么与主管联系是有益的,例如,一条消息广播给所有子Actor或基于消息的内容进行路由。

另一方面,如果主管有其他职责并且您要分配工作量,则最好直接与孩子联系。

我个人倾向于只与主管沟通,因为它允许“单门”方法。通常也更容易将主管插入到代码的其他区域,从而不必查找子ActorRef。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Akka演员阻止消息

来自分类Dev

处理Akka演员的错误

来自分类Dev

Akka演员向具体演员发送消息

来自分类Dev

从Akka演员那里得到消息

来自分类Dev

处理Akka演员中的错误

来自分类Dev

Akka演员正在处理第二条消息,然后再处理第一条消息

来自分类Dev

在scala-akka演员中,我应该在处理消息时打开未来吗?

来自分类Dev

Akka如何确保演员一次只处理一条消息

来自分类Dev

如何测试向其他演员发送消息的Akka演员?

来自分类Dev

Akka演员与Erlang演员中消息顺序语义的后果

来自分类Dev

Akka演员继续前进的消息

来自分类Dev

发送消息给Akka Typed中的父演员

来自分类Dev

Akka演员应该进行多少处理?

来自分类Dev

第二条消息在我的 Akka.Net 演员中变为未处理,然后似乎停止了

来自分类Dev

Akka演员流水线和拥挤的商店演员

来自分类Dev

akka.net管理演员组和创建/获取演员

来自分类Dev

Akka的演员池和组之间的差异

来自分类Dev

Java,Akka演员和绑定邮箱

来自分类Dev

Scaldi依赖注入和Akka演员

来自分类Dev

akka 和 testkit。不能得到演员的孩子

来自分类Dev

AKKA演员

来自分类Dev

使用Kotlin和Akka-TestKit测试Akka演员

来自分类Dev

使用Kotlin和Akka-TestKit测试Akka演员

来自分类Dev

Akka演员-询问消息给我一个空集

来自分类Dev

在Akka中处理多个消息

来自分类Dev

Akka演员应该执行真实的处理任务吗?

来自分类Dev

停止演员中的Akka演员

来自分类Dev

Akka演员和外部工作者线程

来自分类Dev

Akka:获取演员总数