【发布时间】:2012-12-07 04:27:58
【问题描述】:
我读到使用 Akka 时的一条重要规则是避免任何阻塞输入/输出操作、轮询、忙等待、休眠等。但是如果我真的需要一些流控制怎么办?
我正在使用 Akka Actor 向我们的客户发送邮件,并且为了对邮件服务器友好,每 5 秒发送一封邮件。我的计划是使用 dispatcher actor 来进行流控制,并使用 sender actor 来完成邮件发送工作。
class Dispatcher extends Actor {
def receive = {
case ResetPassword(to, data) =>
senderActor ! Mail("resetPassword", to, data)
Thread.sleep(5000)
...
}
}
class Sender extends Actor {
def receive = {
case Mail(to, data) => // send the mail immediately
...
}
}
这是正确的方法吗?如果没有,我应该如何进行流量控制?
【问题讨论】:
-
尽量避免阻塞操作很重要,但这不是硬性规定;请参考doc.akka.io/docs/akka/2.1.0-RC3/general/…