Akka Stream如何确定GraphStageLogic内部是否失败

问题描述 投票:0回答:1

我有一个节点网络都使用自定义GraphStageLogic实现。我找不到任何API来确定某个阶段何时抛出异常(例如IllegalArgumentExceptionCannot pull port)。 Akka唯一能做的就是下游连接失败了。我需要确定的是,例如在postStop中或通过回调,当节点由于运行时异常而关闭时,并将该信息传播到监视整个系统状态的Promise。使用withAttributes(supervisionStrategy)也没有任何影响。让我感到困惑的是,没有办法监控GraphStageLogic内部抛出的异常? failStage最终就像GraphStageLogic的整个API一样。

akka akka-stream
1个回答
0
投票

在定义用于实现Graph的ActorMaterializer时使用decider应该有效:

implicit val materializer: ActorMaterializer = ActorMaterializer(
      ActorMaterializerSettings(actorSystem).withSupervisionStrategy(decider))

决策者是典型的

val decider: Supervision.Decider = {
  case e: IllegalArgumentException => ....
}
© www.soinside.com 2019 - 2024. All rights reserved.