据我所知,Scala mailboxesactors没有大小限制。因此,如果actor从其mailbox读取消息的速度比其他人向该mailbox发送消息的速度慢,则最终会导致内存泄漏。

我们如何确保它不会发生?我们还是应该限制mailbox的大小吗?有什么最佳方法可以防止mailbox增长?

最佳答案

您可以使用拉策略,即消费者从生产者那里请求消息,而不是采用生产者直接向消费​​者发送消息的推送策略。

为确保回复几乎是即时的,生产者可以提前产生有限数量的数据。当他们收到请求时,首先发送一个预先生成的数据,然后再生成一个新的数据。

您也可以使用Akka actor,它提供有限制的邮箱。

关于scala - 如何防止 Actor 邮箱在Scala中增长?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6708381/

10-12 19:44