在使用Akka 1.3的演员时,我是否需要照顾生产者 - 消费者的费率匹配?

时间:2012-10-02 16:14:17

标签: scala concurrency akka actor

当使用Akka 1.3时,我是否需要担心当制作消息的actor生成它们的速度比消耗它们的演员可以处理的速度快时会发生什么?

如果没有任何机制,在长时间运行的进程中,队列大小将增加以消耗所有可用内存。

The doc表示默认调度程序是ExecutorBasedEventDrivenDispatcher。

此调度程序有五个队列配置:

  • Bounded LinkedBlockingQueue
  • Unbounded LinkedBlockingQueue
  • 有界ArrayBlockingQueue
  • Unbounded ArrayBlockingQueue
  • 的SynchronousQueue

和四个过载政策:

  • CallerRuns
  • 中止
  • 放弃
  • DicardOldest

这是正确的机制吗?如果是这样,这个调度员的默认设置是什么?

1 个答案:

答案 0 :(得分:0)

调度程序有一个任务队列。这与您的问题无关。实际上,您希望尽可能多的邮箱入队。

您可能正在寻找的是:http://doc.akka.io/docs/akka/1.3.1/scala/dispatchers.html#Making_the_Actor_mailbox_bounded