如何监督Akka中的参与者并处理异常

63lcw9qa  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(197)

我正在尝试改进系统中参与者的错误处理。有时,在处理数据时,会出现一些错误,我需要停止并重新启动参与者,以及记录有关此故障的一些信息。
我有一个主管,其中有5演员为它工作。所以我需要能够监督他们所有人。我找到了这个链接:
https://doc.akka.io/docs/akka/current/typed/fault-tolerance.html
但我认为在何处实现代码并不十分清楚:
Behaviors.supervise(behavior).onFailure[IllegalStateException](SupervisorStrategy.restart)
这段代码到底应该去哪里
谢谢

bvjxkvbb

bvjxkvbb1#

你可以把这个supervisor看作是另一个behavioiur,它把你的behaviour包裹在里面。
让我们说你想有以下HelloWorld演员。

object HelloWorldActor {

  sealed trait Command
  case class HelloCommand(name: String) extends Command

  def apply(): Behavior[Command] =
    Behaviors.receiveMessage[Command] { 
      case msg: HelloCommand =>
        println(s"Hello ${msg.name}")
        Behaviors.same
    }

}

现在,您可以用“主管”来“ Package ”这种“行为”

object SupervisedHelloWorldActor {

  sealed trait Command
  case class HelloCommand(name: String) extends Command

  def apply(): Behavior[Command] =
    Behaviors.supervise(
      Behaviors.receiveMessage[Command] { 
        case HelloCommand(name) =>
          println(s"Hello ${name}")
          Behaviors.same
      }
    ).onFailure(onFailure[IllegalStateException](SupervisorStrategy.restart))

}

相关问题