How can I have an Akka actor executed every 5 min?

前端 未结 4 1782
离开以前
离开以前 2020-12-23 11:01

I\'d like to know if there are any mechanism in Akka that can have an actor executed periodically?

4条回答
  •  执念已碎
    2020-12-23 11:37

    More complete Java example:

    import akka.actor.AbstractActor;
    import akka.actor.ActorRef;
    import scala.concurrent.duration.FiniteDuration;
    import java.util.concurrent.TimeUnit;
    
    public class AnActor extends AbstractActor {
        private final FiniteDuration SCHEDULED_WORK_DELAY = new FiniteDuration(5, TimeUnit.MINUTES);
    
        @Override
        public void preStart() {
            getSelf().tell("Do Scheduled Work", ActorRef.noSender());
        }
    
        @Override
        public Receive createReceive() {
            return receiveBuilder()
            .matchEquals("Do Scheduled Work", work -> {
                doScheduledWork();
             context().system().scheduler().scheduleOnce(SCHEDULED_WORK_DELAY, getSelf(),
                    "Do Scheduled Work", context().dispatcher(), ActorRef.noSender());
            })
            .build();
        }
    
        private void doScheduledWork() { ... }
    }
    

提交回复
热议问题