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

时间:2019-03-14 00:50:03

标签: akka akka-stream

我有一个由自定义GraphStageLogic实现的节点网络。我找不到任何API来确定阶段何时引发异常(例如IllegalArgumentException代表Cannot pull port)。 Akka唯一要做的就是使下游连接失败。我需要确定的是,例如在postStop中或通过回调,何时节点由于运行时异常而关闭,并将该信息传播到监视整个系统状态的Promise中。使用withAttributes(supervisionStrategy)也不起作用。在我看来,没有办法监视GraphStageLogic中引发的异常了吗? failStage是最终的,就像GraphStageLogic的整个API一样。

1 个答案:

答案 0 :(得分:0)

在定义用于实现图的ActorMaterializer时使用决策程序应该起作用:

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

其中决策者是典型的

val decider: Supervision.Decider = {
  case e: IllegalArgumentException => ....
}