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

在阿卡问模式

拓拔野
2023-03-14

我有一个关于阿卡的询问模式的问题。

我正在使用应用程序中的ask模式调用演员。我的应用程序是一个普通的类(不是演员本身):

(actor1Ref ? msg) mapTo[ResponseMsg]

然而,上面所说的演员叫第二个演员,比如:

secondActor ! msg(sender)

第二个参与者会返回实际的响应,比如:

originalSender ! responseMsg

所以基本上涉及到一个间接寻址,当Actor1调用Actor2时,它使用

我测试了代码,它的工作原理。但是我不确定以上是否是编写这段代码的正确方式。

所以我应该一直使用在actor1和actor2调用之间切换,并尝试通过管道发送结果?还是我可以使用 在中间调用之间,当我想返回到原始调用方时,只需向我传递的引用发送消息?


共有1个答案

汪弘光
2023-03-14

你目前的方法很好。事实上,最好使用告诉)进行演员之间的交流。从文件中:

使用ask会对性能产生影响,因为有些东西需要跟踪它什么时候超时,需要有一些东西将Promise连接到ActorRef,并且还需要通过远程访问来访问它。因此,在性能方面总是倾向于使用,如果必须的话,只使用

[告诉]是发送消息的首选方式。没有等待消息的阻塞。这提供了最佳的并发性和可伸缩性特性。

 类似资料:
  • 考虑经典的“字数统计”程序。它计算某个目录中所有文件的字数。Master接收一些目录,并在Worker actors之间分割作业(每个Worker处理一个文件)。这是伪代码: 但是我想按计划运行这个字数统计程序(例如每1分钟),提供不同的目录进行扫描。 Akka为调度消息传递提供了很好的方式: 但上述调度程序的问题始于调度程序按记号发送新消息,但之前的消息尚未处理(例如,我发送消息扫描某个大目录,

  • 阅读Scala文档时,我很难理解询问和讲述之间的区别。 http://doc.akka.io/docs/akka/snapshot/scala/actors.html各国: ! 表示“发射并忘记”,例如异步发送消息并立即返回。也被称为告诉。 ? 异步发送消息并返回表示可能回复的未来。也称为询问。 如果我使用的演员产生了一个网络请求,那么问和告诉之间有什么区别?在这两种情况下,请求都将异步生成,并且

  • 问题内容: 当我在Android上运行使用Akka的应用程序时,收到以下异常: 在actor系统创建期间抛出此异常: 我以为proguard删除了一个构造函数,所以我在proguard.cfg中添加了以下行: 但这没有帮助。 我究竟做错了什么? 问题答案: 您的具有以下签名的构造函数之一不公开或不存在:

  • 我是Akka的新手,我想知道我应该如何处理将工作委托给其他(儿童)演员的演员,但在哪里: 其中一些儿童演员必须按特定顺序参与;和 其中一些子参与者可以以任何顺序参与,并且可以真正地与主/父参与者所做的事情异步执行 假设我有以下儿童演员(不管他们做什么): 假设我有以下调用它们的父参与者: 如你所见: 必须首先“参与”(由家长调用),我们必须等待家长的响应,然后才能继续参与/调用、或 换句话说,当消

  • 我正在尝试了解akka流媒体中的toMat。例如: viaMat vs via有什么用 谢谢你,阿伦

  • 我只是从阿卡开始,我试图将一些混乱的功能分成更容易管理的部分,每个部分都由不同的演员执行。 我的任务似乎正是适合演员模式的。我有一个对象树,它们保存在数据库中。每个节点都有一些属性;让我们只关注一个,称之为财富。孩子的财富取决于父母的财富。当计算节点上的财富时,这应该会在子节点上触发类似的计算。我想收集节点的所有更新实例,并同时将它们保存在数据库中。 这似乎很简单:一个参与者只需执行计算,然后为当