我读过使用 Akka 时的一条重要规则是避免任何阻塞输入/输出操作、轮询、忙等待、睡眠等。但是如果我真的需要一些流控制怎么办?
我正在使用 Akka Actor 向我们的客户发送邮件,并且为了对邮件服务器友好,每 5 秒发送一封邮件。我的计划是使用调度员执行流程控制和发送方执行邮件发送工作。
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
...
}
}
这是正确的方法吗?如果没有,我应该如何进行流量控制?