Akka-2インスタンスは無限ループのままで、処理するデータがないか10分ごとにチェックする必要があります。Akka-2インスタンスは、メールボックスをオーバーフローさせずにn TimeUnitsごとにメッセージを送信します。
ループを設計して、インスタンスが自分自身を呼び出し、何らかの作業をしてから一定時間スリープするようにするにはどうすればよいですか?
また、メールボックスサイズをもうクエリできないことがわかりました。作業タスク(この場合はディスパッチ機能)がアクティブである限り、どのようにメッセージが無視されることを確認しますか?
case class Dispatch()
// Automatical start? The start function has been removed since Akka 2 ?
val dispatcher = system.actorOf(Props[MailDispatcher])
class MailDispatcher extends Actor {
private val interval = Config.getLong("mail.check.interval")
context.setReceiveTimeout(Duration(interval, TimeUnit.SECONDS))
def receive = {
case ReceiveTimeout => {
self ! Dispatch
}
case Dispatch => dispatch()
case e: Exception => Logger.error("unexpected Error: " + e)
}
def dispatch() {
// trigger mail-dispatch
}
}
あなたのコメントの質問を検討してください:はい、Akka 2は、開始メソッドが削除され、作成のアクターを開始します。 http://akka.io/docs/akka/2.0-RC1/scala/actors.html#creating-actors-with-default-constructor – Frank