据我所知,Scala mailboxes
的{{1}}没有大小限制。因此,如果actors
从其actor
较慢中读取消息而其他人向该mailbox
发送消息,那么它最终会造成内存泄漏。
我们怎样才能确保它不会发生?我们应该限制mailbox
大小吗?阻止mailbox
成长的最佳做法是什么?
答案 0 :(得分:4)
生产者可以直接向消费者发送消息,而不是采用推送策略,您可以使用 pull 策略,消费者向生产者请求消息。
为了确保回复几乎是即时的,生产者可以提前生成有限数量的数据。当他们收到请求时,首先他们发送一个预生成的数据,然后生成一个新数据。
你也可以使用提供有界邮箱的Akka actor。