【发布时间】:2013-11-14 04:26:13
【问题描述】:
我有一个包含 2 个参与者的系统,它们共享相同的配置。这个期望的配置是:“邮箱的最大容量应该是 1 封邮件,并且任何溢出的邮件都应该被丢弃”。
最简单的设置方法是什么?
我已尝试将以下内容放入(Play Framework's)application.conf:
akka.actor.default-mailbox {
mailbox-type = "akka.dispatch.BoundedMailbox"
mailbox-capacity = 1
}
但它不起作用:演员的邮箱在忙碌时仍然会堆积消息,并在可用时处理每个消息。要么演员不关心application.conf的内容,要么上面的配置不正确。
有什么想法吗?
【问题讨论】:
-
您的问题与this 非常相似。你可以在那里找到几个可能的解决方案。
-
在 Akka2 中无法读取邮箱大小,不是吗?如果我应该重新设计我的 Scala 应用程序,那就这样吧。到目前为止,我一直在使用 Akka,因为我想运行定期任务,例如“每秒运行此函数,除非它仍在运行”。如何在 Scala 中做到这一点?
-
如果你需要每秒运行一些东西,你应该看看 Akka 中的调度程序内置。只需调用 system.scheduler.schedule(initialDelay, interval, your-function)。您还可以使用调度程序将消息发送给参与者一次或使用设定的时间间隔。
-
@pushy 感谢您的建议,它看起来像我需要的。 API 指示
def schedule (initialDelay: Duration, frequency: Duration)(f: ⇒ Unit),但我对 Scala 非常缺乏经验,因此需要此调用的代码示例。该函数将是在外部Object中定义的公共函数