yanom blog

様々な技術について書きます

AkkaでGraceful Shutdownのやり方

自分用にメモを残しておきます。

参考

シャットダウン時に処理を行う

CoordinatedShutdown.get(system)
    .addTask(
        CoordinatedShutdown.PhaseBeforeServiceUnbind(),
        "someTaskName",
        () -> {
          return akka.pattern.Patterns.ask(someActor, "stop", Duration.ofSeconds(5))
              .thenApply(reply -> Done.getInstance());
        });

Akkaがシャットダウンする前に処理を行う

JVMのシャットダウンを検知し、Akkaがシャットダウンする前になにか処理を行う。

CoordinatedShutdown.get(system)
    .addJvmShutdownHook(() -> System.out.println("custom JVM shutdown hook..."));

docker上でAkkaを実行していたとしても、上記hookは当然動作します。