Поскольку receiveMessage[A]
может соответствовать только сообщениям, которые соответствуют типу A
, и вы не можете объявить тип A
, который включает системные сообщения для PostStop
и т. Д. Вместо этого Akka-Typed имеетвыделенный receiveSignal
.
Учитывая ваш пример, когда вы уже захватываете общий контекст с помощью Behavior.setup
, вы можете связать receiveSignal
с поведением сообщения, чтобы быть частью того же поведения:
Behaviors.setup { context =>
val greeter = context.spawn(HelloWorld.greeter, "greeter")
Behaviors.receiveMessage { message =>
val replyTo = context.spawn(HelloWorldBot.bot(greetingCounter = 0, max = 3), message.name)
greeter ! HelloWorld.Greet(message.name, replyTo)
Behaviors.same
}.receiveSignal {
case (context, PostStop) =>
context.log.info("behavior stopped")
Behaviors.same
}