Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Akka 当消息太多时,是否会创建新的actor实例?_Akka_Actor - Fatal编程技术网

Akka 当消息太多时,是否会创建新的actor实例?

Akka 当消息太多时,是否会创建新的actor实例?,akka,actor,Akka,Actor,我最近了解了阿克卡,但有些想法我不太明白。 我的问题是,若队列中的消息太多,是否会创建一个新的参与者 例如,在许多框架中,一条http请求消息出现,框架发现当前的“工作线程”正忙,因此框架将创建另一个“工作线程”来处理另一个线程中的新消息 但阿克卡似乎没有这样做,只有一个演员的例子 因此,我认为“忙碌的演员”会插队,这将影响整个演出和表演,对吗?TL;博士: 如果您发送消息的速度比参与者处理消息的速度快,那么最终您的应用程序将开始删除消息 更长的回答: 据我所知,每个Akka参与者都有一个与之相

我最近了解了阿克卡,但有些想法我不太明白。 我的问题是,若队列中的消息太多,是否会创建一个新的参与者

例如,在许多框架中,一条http请求消息出现,框架发现当前的“工作线程”正忙,因此框架将创建另一个“工作线程”来处理另一个线程中的新消息

但阿克卡似乎没有这样做,只有一个演员的例子


因此,我认为“忙碌的演员”会插队,这将影响整个演出和表演,对吗?

TL;博士:
如果您发送消息的速度比参与者处理消息的速度快,那么最终您的应用程序将开始删除消息

更长的回答:

据我所知,每个Akka参与者都有一个与之相关联的队列,其中包含它接收的所有消息

如果您向这个参与者发送消息,其处理速度超过参与者的处理速度,那么最终队列将溢出,因为队列上的消息保存在ram中

不可能在飞行中产生另一个演员。因为队列上的消息是按顺序处理的。如果存在多个消费者,则此订购将被中断


我建议您看看,这是一个构建在actors之上的更高级别的API,它通过在整个系统中提供反压力来防止这种情况的发生。这意味着,如果您向其发送消息的参与者比生成消息的人慢,消费者将要求制作人放慢速度,并且不会使参与者队列溢出。

TL;博士:
如果您发送消息的速度比参与者处理消息的速度快,那么最终您的应用程序将开始删除消息

更长的回答:

据我所知,每个Akka参与者都有一个与之相关联的队列,其中包含它接收的所有消息

如果您向这个参与者发送消息,其处理速度超过参与者的处理速度,那么最终队列将溢出,因为队列上的消息保存在ram中

不可能在飞行中产生另一个演员。因为队列上的消息是按顺序处理的。如果存在多个消费者,则此订购将被中断


我建议您看看,这是一个构建在actors之上的更高级别的API,它通过在整个系统中提供反压力来防止这种情况的发生。这意味着,如果您发送消息的参与者比生成消息的人慢,消费者将要求制作人放慢速度,并且不会使参与者队列溢出。

每个
参与者将其消息存储在
邮箱中。

默认邮箱是无限制和非阻塞的。如果您的参与者不能足够快地处理邮件,那么他们的邮箱就会膨胀,并消耗越来越多的RAM。您可以将Akka配置为使用一个有边界的、阻塞的
邮箱
,当容量过大时,该邮箱将阻塞发件人

如果您想动态管理一组参与者,请研究路由策略。

您可以创建一个
路由器
参与者
,它接收消息并将消息传递给routee参与者。
路由器
还管理路由池,可以根据需要动态生成路由



另外,如果使用
Future
和回调异步执行,参与者将不会阻止http请求

每个
Actor
将其邮件存储在
邮箱中。

默认邮箱是无限制和非阻塞的。如果您的参与者不能足够快地处理邮件,那么他们的邮箱就会膨胀,并消耗越来越多的RAM。您可以将Akka配置为使用一个有边界的、阻塞的
邮箱
,当容量过大时,该邮箱将阻塞发件人

如果您想动态管理一组参与者,请研究路由策略。

您可以创建一个
路由器
参与者
,它接收消息并将消息传递给routee参与者。
路由器
还管理路由池,可以根据需要动态生成路由



另外,如果使用
Future
和回调异步执行,参与者将不会阻止http请求

使用有界邮箱您的应用程序不会消亡,但如果溢出,您将丢失消息。@ViktorKlang更新了我的回答实际上,这取决于您是使用有界阻止邮箱还是有界非阻止邮箱使用有界邮箱您的应用程序不会消亡,“但如果溢出,您将丢失邮件。@ViktorKlang更新了我的回答实际上,这取决于您使用的是有界阻止邮箱还是有界非阻止邮箱。”