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

Akka阻塞请求会阻塞其他演员吗?

席安康
2023-03-14

假设我们有:

  • 线程1,包含actor A、B和C。
  • 包含执行元y的线程2。
  • 包含演员Z的线程3。
  • 演员A和B正在监听演员Y的消息。

然后,参与者C向参与者Z发出阻塞请求

我包含了Actor Y,以允许它在Z处理来自C的请求时发送消息。

所有线程都在不同的物理核心上--它们并行运行。

共有1个答案

汪庆
2023-03-14

Actor可以在任何线程上处理来自队列的消息--默认情况下,它们不固定到具体的线程(如果不使用固定的调度器)。简单地说,来自同一队列的不同消息可能在不同的线程上处理(由dispatcher选择)。

我想所谓的“线程限制演员”是指在一个或几个时刻(消息)内进行限制。因为dispatcher(默认情况下)可以为任何参与者/邮箱的任何消息选择任何线程。在实践中,有时它可能会选择相同的线程,但不总是这样。

因此,如果一个线程被阻塞,dispatcher(默认情况下)将转到另一个线程。如果有足够的线程,AB可能会在C完成之前接收消息。

 类似资料:
  • 请注意:虽然我更喜欢使用Akka的JavaAPI的解决方案(这就是我正在使用的),但我对任何工作解决方案都很满意,并且可能会想出如何将基于Scala的答案翻译成Java。 我有一个Akka应用程序,有很多演员,其中两个是和。actor可以接受两种类型的消息: ;和 执行器简单地接受一条消息。这些参与者和系统其他部分之间的消息流如下: 任何东西(其他参与者,甚至参与者系统之外的事件驱动组件)都可以随

  • 问题内容: 我在芹菜中使用Python进行大量的(〜10 / sec)API调用(包括GET,POST,PUT,DELETE)。每个请求大约需要5-10秒才能完成。 我尝试在池中运行芹菜工人,并发数为1000。 由于正在阻塞进程,每个并发连接都在等待一个请求。 如何使异步? 问题答案: 使用eventlet Monkey patching使所有纯python库都无阻塞。 补丁单库 import e

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

  • 问题内容: 我正在使用PHP从远程服务器下载一个(大)文件,并且此下载是通过单击网页上的下载按钮触发的。 因此,当我单击网页上的按钮时,就会向PHP函数发出请求(带有angulars )。该函数使用触发下载。 同时,我想使用Ajax向我的PHP网站提出其他请求。但是,只要下载正在进行,所有其他Ajax请求都会显示状态。 因此,基本上,下载阻止了对PHP的所有其他请求。有什么办法可以避免这种阻塞?