Akka を使用する際の重要なルールは、入出力操作のブロック、ポーリング、ビジー待機、スリープなどを回避することであると読みました。しかし、フロー制御が本当に必要な場合はどうすればよいでしょうか?
私は Akka アクターを使用して顧客にメールを送信しています。メール サーバーに優しくするために、5 秒に 1 通のメールを送信しています。私の計画では、ディスパッチャー アクターを使用してフロー制御を行い、送信者アクターを使用してメール送信作業を行います。
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
...
}
}
これは正しい方法ですか?そうでない場合、フロー制御を行うにはどうすればよいですか?