Prev Next

Integration / 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...

Show more question and Answers...


Comments & Discussions