MuleESB / Akka interview questions
Akka actor life cycle hooks.
preStart() is invoked after the actor has started but before it processes its first message.
postStop() is invoked just before the actor stops. No messages are processed after this point.
package net.javapedia.akka.example; import akka.actor.AbstractActor; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.event.Logging; import akka.event.LoggingAdapter; public class TestActor extends AbstractActor { private LoggingAdapter log = Logging.getLogger(getContext().getSystem(), this); @Override public Receive createReceive() { //Doesn't handle any message return receiveBuilder().build(); } public static Props props() { Props props = Props.create(TestActor.class, TestActor::new); return props; } @Override public void preStart() throws Exception { log.info("Application started..."); } @Override public void postRestart(Throwable reason) throws Exception { log.info("Application restarted..."); } @Override public void postStop() throws Exception { log.info("Application stopped."); } public static void main(String[] args) { ActorSystem actorSystem = ActorSystem.create("actorSystem"); try { ActorRef actorRef = actorSystem.actorOf(TestActor.props(), "supervison"); } finally { actorSystem.terminate(); } } }
Output:
Task :TestActor.main() [INFO] [09/16/2019 20:53:34.704] [actorSystem-akka.actor.default-dispatcher-2] [akka://actorSystem/user/supervison] Application started... [INFO] [09/16/2019 20:53:34.707] [actorSystem-akka.actor.default-dispatcher-2] [akka://actorSystem/user/supervison] Application stopped.
More Related questions...