gpt4 book ai didi

akka - 何时使用各种 Akka 邮箱类型

转载 作者:行者123 更新时间:2023-12-04 14:26:34 27 4
gpt4 key购买 nike

我试图了解何时何地使用不同的 built-in Akka mailboxes以及何时适合自己滚动。但是,该页面上的任何地方都没有解释“ 有界邮箱 ”实际上是什么,或者它的行为方式与无界邮箱有何不同。此外,该页面将邮箱分类为“阻塞”与“非阻塞”。虽然我很清楚他们的意思(除非先清空邮箱,否则可以将消息发送到邮箱),但我不能 100% 确定我理解这一点。因此,看到我不知道文档将邮箱归类为有界或阻塞的含义时,我很难判断何时应该使用每种类型。

此外,如果 Actor 重新启动,清除 Actor 的邮箱似乎是默认的 Akka 行为。我想防止这种情况发生,但不确定解决方案是使用这些内置邮箱类型中的一种(此页面上未提及消息持久性)还是以某种方式使用持久性参与者来实现这种无损。

最佳答案

首先,如果actor 崩溃并重新启动,您只会丢失正在处理的当前消息,而不是整个邮箱。

有界邮箱对它在开始阻塞发件人之前可以排队的邮件数量有限制,如果在发件人尝试放置项目时队列没有关闭,则不允许该项目。如果您担心内存问题并且您可以处理潜在的消息丢失,那么您可能需要这样的东西。无界邮箱根本没有容量限制,因此如果它被淹没,它可能会遇到内存问题。

它是否有界将影响它是否阻塞。阻塞通常对性能不利,如果情况不要求有界邮箱,则应避免阻塞。这就是为什么默认邮箱是无界的;它将产生比有界对应物更好的性能。

单一消费者无界邮箱很可能是最快的,因为它被优化为只有一个消费者从队列中取出东西。这意味着您不能使用允许 actor 实例从另一个 actor 实例邮箱(工作分发/窃取)窃取项目的调度程序,但如果您不关心这一点,那么此邮箱可能是性能的最佳选择。

基于优先级的邮箱允许您提供代码,允许队列中的位置根据消息本身的某些属性而有所不同。这允许您自己定义消息的优先级,然后无论正常的 FIFO 规则如何,这都会将更高优先级的项目移到队列的前面。

关于akka - 何时使用各种 Akka 邮箱类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30581148/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com