akka2.6.0中的监督决策者策略

wrrgggsh  于 2023-04-20  发布在  其他
关注(0)|答案(1)|浏览(196)

我必须通过supervision.decider,但在akka 2.6.0+ Materializer没有类似的设置。
有没有人可以分享一下如何在更高版本中编写下面的代码:

val mat: ActorMaterializer = ActorMaterializer(Actor Materializersettings(supervision.decider))

尝试了新方法,不选择策略类需要String
1.

val mat: Materializer = Matrializer(actorsystem)
mat.system.settings.supervisionstratgyclass = ???
  1. ActorAttributes(supervision.decider)
    任何想法将赞赏如何通过物化的监督策略。
    我们如何在设置中传递自定义监督策略?我不使用流。它将简单地启动调用物化。
v6ylcynt

v6ylcynt1#

听起来你想为一个流设置一个监督策略。这里有一些官方文档中的例子:流错误-监督策略。
正如您所看到的,在下面的示例中,为可运行图设置了一个默认的监督策略

val decider: Supervision.Decider = {
  case _: ArithmeticException => Supervision.Resume
  case _                      => Supervision.Stop
}
val source = Source(0 to 5).map(100 / _)
val runnableGraph =
  source.toMat(Sink.fold(0)(_ + _))(Keep.right)

val withCustomSupervision = runnableGraph.withAttributes(ActorAttributes.supervisionStrategy(decider))

在另一个示例中,在Flow级别定义了一个监督策略

val decider: Supervision.Decider = {
  case _: ArithmeticException => Supervision.Resume
  case _                      => Supervision.Stop
}
val flow = Flow[Int]
  .filter(100 / _ < 50)
  .map(elem => 100 / (5 - elem))
  .withAttributes(ActorAttributes.supervisionStrategy(decider))
val source = Source(0 to 5).via(flow)

相关问题