我正在尋找akka調度程序使用的一些示例。我有一個演員(讓我們稱之爲 - dataProducer)實現從一些數據庫中檢索數據。我想寫一個調度程序actor,它將在5秒鐘間隔內爲dataProducer actor提供極點。如果數據檢索比調度程序間隔需要更多時間,那麼該如何處理這種情況。 Scheduler actor中的scheduleOnce方法會處理這個問題嗎?使用akka調度程序的數據推送
這裏是我的調度演員
import java.util.concurrent.{Executors, TimeUnit}
import akka.actor.{Actor, Cancellable, Props}
import scala.concurrent.ExecutionContext
class SchedulerActor(interval: Long) extends Actor with LogF{
implicit val ec = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(100))
private var scheduler: Cancellable = _
override def preStart(): Unit = {
import scala.concurrent.duration._
scheduler = context.system.scheduler.schedule(
initialDelay = 0 seconds,
interval = FiniteDuration(interval, TimeUnit.SECONDS),
receiver = self,
message = FetchData
)
}
override def postStop(): Unit = {
scheduler.cancel()
}
def receive = {
case FetchData =>
logger.debug("Fetch Data")
sender() ! "Data Fetched!!!" //here I'll call dataProducer API
true
case unknown =>
throw new RuntimeException("ERROR: Received unknown message [" + unknown + "], can't handle it")
}
}
object SchedulerActor {
def props(interval: Long): Props = Props(new SchedulerActor(interval))
}
sealed trait FetchDataMessage
case object FetchData extends FetchDataMessage
如果你想得到有意義的答案,我建議你展示你到目前爲止嘗試過的。 – hasumedic
更新了我的問題... – Abhay