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

Akka模式-演员树,回复原始源

易超
2023-03-14

假设我有一个演员树,它做一堆处理。处理由客户机/连接执行元启动(即,树是服务器)。最终客户端执行元需要响应。即。我有一个演员系统看起来是这样的。

    ActorA  <---reqData--- Client_Actor
       | msgA                    /|\                      
      \|/                         |                 
    ActorB                        |                  
  msgB |  \ msgD                  | 
      \|/  \/                     | 
    ActorC  ActorD---------msgY-->|
       |_____________msgX_________|

客户端系统需要的响应是叶参与者的输出(即actorC和/或actorD)。树中的这些参与者可能正在与外部系统交互。此树可能是一组预定义的可能路由的参与者(即,因此client_actor只有一个actorref指向参与者树的根actora)。

问题是管理将响应(msgx&或msgy)从final/leaf参与者发送回客户端参与者的最佳模式是什么?

    null

干杯!

共有1个答案

贺立果
2023-03-14

您可以使用forward方法将消息从原始发件人转发到每个级别的子发件人。

在Client_Actor中:

actorA ! "hello"

在Actora:

def receive = {
  case msg =>
    ???
    actorB forward msg
}
def receive = {
  case msg =>
    ???
    actorC forward msg
}
def receive = {
  case msg =>
    ???
    sender ! "reply" // sender is Client_Actor!
}
destinationActor.tell("my message", someSenderActor);
 类似资料:
  • 我正在尝试使用ask模式向远程参与者发送请求。本地actor接收一些值,并对其执行一些任务并更新它。然后,当本地参与者试图将更新后的值发送回远程参与者时,在发送时发生错误。我应该如何处理这个错误? 错误:[INFO][03/31/2017 17:28:18.383][ClientSystem-Akka.actor.Default-Dispatcher-3][Akka://ClientSystem/

  • 我很想知道调整大小,或者在本例中增加单个节点系统上的actor池中actor的数量是否真的会影响性能。 我有一个带超线程的四核系统。在任何给定的点上,系统可以运行8个线程。假设执行元执行的大多数操作都是CPU绑定的,那么将池中的执行元数量从20个增加到40个会有什么收获呢?

  • 假设我有一个IO Actor,能够通过TCP发送和接收消息。在我的演员中,我要求连接的另一方做出回应: 使用此代码,ask future超时,而包含参与者接收ask模式之外的原始消息。 你能在Akka IO演员身上使用ask模式吗?若否,原因为何?

  • [04/27/2014 18:09:05.518][ReadScheduler-Akka.actor.Default-Dispatcher-3][Akka://ReadScheduler/User/Collector]从参与者[Akka://ReadScheduler/User/Executor#2127791644]到参与者[Akka://ReadScheduler/User/Collector

  • java.util.concurrent.CompletionException:Akka.Pattern.AskTimeoutException:收件人[Actor[akka:/web_server/user/MyActor#-769383443]]已终止。发送者[null]发送了类型为“com.data.model.request”的消息。 所以我重写了方法,在那里添加了一个log语句。 现在

  • 由于akka是一个构建actor模型的工具包,而actor模型是运行在JVM内部的对象,那么创建后的actor对象的可靠性有多高。考虑到让它崩溃的性质,除非像使用毒丸或JVM关闭一样显式地杀死它,否则JVM中actor对象的可靠性有多高,actor不是自己全部杀死的。