1

我有一个有 2 个参与者的系统,它们共享相同的配置。这个期望的配置是:“邮箱的最大容量应该是 1 封邮件,并且任何溢出的邮件都应该被丢弃”。

设置它的最简单方法是什么?

我尝试将以下内容放入(Play Framework's)application.conf

akka.actor.default-mailbox {
    mailbox-type = "akka.dispatch.BoundedMailbox"
    mailbox-capacity = 1
}

但它不起作用:actor 的邮箱在忙碌时仍然会堆积消息,并在可用时处理每个消息。要么演员不关心 的内容application.conf,要么上面的配置不正确。

有任何想法吗?

4

2 回答 2

3

将 Actor 系统中所有 Actor 的默认邮箱设置为只有一个项目的有界邮箱并不是一个好主意,最好将您的 Actor 配置为使用Akka 文档中描述的指定邮箱。通过部署或直接在代码中。

您的邮箱配置还需要一个推送超时,如果您想立即丢弃邮件,您可以将其设置为 0。

于 2013-11-06T21:22:40.023 回答
-2

如果像我一样你想要一个最大容量为 1 的邮箱,并丢弃溢出的消息,我建议使用java.util.Timer而不是 Akka。

这是我在 Scala 程序中写的:

MyTask.scala:

object MyTask extends TimerTask {
  var isRunning = false;

  def run() {
    if (!isRunning) {
      isRunning = true

      [...]

      isRunning = false
    }
  }
}

0ms后执行任务,每秒重复一次:

new Timer().schedule(MyTask, 0, 1000)
于 2013-11-13T20:26:13.263 回答