Akka Scheduler
- Akka Scheduler, 일정 시간 이후 작업을 작동시킨다.
- Scheduler의 정확도를 높히기 위해서는 application.conf 설정파일의 `akka.scheduler.tick-duration`를 수정해야된다.
- 긴 시간 (long term) Scheduler로서는 부적절하기 때문에 akka-quartz-scheduler 사용하는 것이 좋다.
- 주기적인 메시지나 싱글 메시지를 위한거면 scheduler 사용하는 것 대신 Actor Timer의 사용을 추천한다.
Send to Actor
system.scheduler().scheduleOnce(Duration.ofMillis(50),
testActor, "foo", system.dispatcher(), null);
Runnable
system.scheduler().scheduleOnce(Duration.ofMillis(50),
new Runnable() {
@Override
public void run() {
testActor.tell(System.currentTimeMillis(), ActorRef.noSender());
}
}, system.dispatcher());
Tick
class Ticker extends AbstractActor {
@Override
public Receive createReceive() {
return receiveBuilder()
.matchEquals("Tick", m -> {
// Do someting
})
.build();
}
}
ActorRef tickActor = system.actorOf(Props.create(Ticker.class, this));
//This will schedule to send the Tick-message
//to the tickActor after 0ms repeating every 50ms
Cancellable cancellable = system.scheduler().schedule(Duration.ZERO,
Duration.ofMillis(50), tickActor, "Tick",
system.dispatcher(), null);
//This cancels further Ticks to be sent
cancellable.cancel();
- cancellable 객체를 통해 주기적인 스케쥴러(tick) 정지할수있다.
Reference
'Programing > Akka' 카테고리의 다른 글
Akka Cluster Seed Node (0) | 2018.08.25 |
---|---|
Akka Management (0) | 2018.08.21 |
Akka Stream Asynchronous operators (0) | 2018.08.17 |
Cluster Aware Router (0) | 2018.08.16 |
Akka Actor / Stream / Cluster 을 이용한 확장 가능한 Task 단위의 시스템 (0) | 2018.08.15 |