Заставить экземпляр Akka-2 отправлять себе сообщение каждые n единиц времени без переполнения почтового ящика.

Экземпляр Akka-2 должен оставаться в бесконечном цикле и каждые 10 минут проверять данные для обработки.

Как мне спроектировать цикл так, чтобы экземпляр вызывал сам себя, проверял работу, которую нужно выполнить, а затем спал в течение определенного интервала?

Также я вижу, что больше нельзя запрашивать размер почтового ящика. Как убедиться, что сообщения игнорируются, пока активна рабочая задача (в данном случае функция отправки)?

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       
  }
}
5
задан recalcitrant 22 February 2012 в 23:57
поделиться