akka 스케줄러 사용법에 대한 몇 가지 예를 찾고 있습니다. 필자는 일부 데이터베이스에서 데이터를 검색하기 위해 하나의 액터 (dataProducer라고 부름) 구현을했습니다. 5 초 간격으로 dataProducer 액터를 극대화 할 하나의 스케줄러 액터를 작성하고 싶습니다. 또한 데이터 검색이 스케줄러 간격보다 많은 시간이 걸리는 경우 케이스를 처리하는 방법. Scheduler 액터의 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