如何在 Akka Typed 中使用 PreRestart?
How to use PreRestart in Akka Typed?
我刚刚在工作中遇到了一个与 https://github.com/akka/akka/issues/26899 相对应的问题。
如何编写类型化的行为以获得
case (reason: Throwable, message: Option[Any]) =>
用于在我的内部重新启动(类似于无类型的 actor)Behaviors.receive
用于处理具体消息的异常?
所以现在我只看到收到 PreRestart
:
Behaviors.receiveMessage {
msg =>
//...
}.receiveSignal {
case (actor, signal) =>
println(signal)
//...
}
PreRestart
不是异常处理程序,而是进行清理的机会。为了强调这一点,信号在 Akka Typed 中尽可能简单。
你可以说,这也是 "Let It Crash" 范式的结果:如果预期会出现异常,那么你可以在它发生的地方处理它。然而,如果异常是意外的,那么这正是 actor 监督和自动重启应该处理的情况:不要假设任何事情,而是从一张白纸开始。
类型化监管策略(tutorial post)可以按异常类型选择。由于类似的原因,即使在那里也无法查看详细信息。
我刚刚在工作中遇到了一个与 https://github.com/akka/akka/issues/26899 相对应的问题。
如何编写类型化的行为以获得
case (reason: Throwable, message: Option[Any]) =>
用于在我的内部重新启动(类似于无类型的 actor)Behaviors.receive
用于处理具体消息的异常?
所以现在我只看到收到 PreRestart
:
Behaviors.receiveMessage {
msg =>
//...
}.receiveSignal {
case (actor, signal) =>
println(signal)
//...
}
PreRestart
不是异常处理程序,而是进行清理的机会。为了强调这一点,信号在 Akka Typed 中尽可能简单。
你可以说,这也是 "Let It Crash" 范式的结果:如果预期会出现异常,那么你可以在它发生的地方处理它。然而,如果异常是意外的,那么这正是 actor 监督和自动重启应该处理的情况:不要假设任何事情,而是从一张白纸开始。
类型化监管策略(tutorial post)可以按异常类型选择。由于类似的原因,即使在那里也无法查看详细信息。