【问题标题】:How to use PreRestart in Akka Typed?如何在 Akka Typed 中使用 PreRestart?
【发布时间】:2019-05-19 11:47:11
【问题描述】:

我刚刚在工作中遇到了与https://github.com/akka/akka/issues/26899 对应的问题。

我怎样才能写出我可以得到的类型化行为

case (reason: Throwable, message: Option[Any]) =>

用于在我的Behaviors.receive 中重新启动(类似于在无类型角色中)以处理具体消息的异常?

所以现在我只看到收到PreRestart

Behaviors.receiveMessage {
  msg =>
    //...
}.receiveSignal {
  case (actor, signal) =>
    println(signal)
    //...
}

【问题讨论】:

    标签: scala akka akka-typed


    【解决方案1】:

    PreRestart 不是异常处理程序,而是进行清理的机会。为了强调这一点,Akka Typed 中的信号尽可能简单。

    您可以说,这也是“让它崩溃”范式的结果:如果预期会出现异常,那么您可以在它发生的地方处理它。但是,如果异常是意料之外的,那么这正是参与者监督和自动重启应该处理的情况:不要假设任何事情,只能从空白开始。

    类型化监管策略(tutorial post)可以通过异常类型来选择。由于类似的原因,即使在那里也无法查看细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-05
      • 2020-10-06
      • 2019-12-19
      • 2021-06-06
      • 2016-03-25
      • 2020-05-31
      • 2021-01-30
      • 2020-12-20
      相关资源
      最近更新 更多