我有一个由自定义GraphStageLogic
实现的节点网络。我找不到任何API来确定阶段何时引发异常(例如IllegalArgumentException
代表Cannot pull port
)。 Akka唯一要做的就是使下游连接失败。我需要确定的是,例如在postStop
中或通过回调,何时节点由于运行时异常而关闭,并将该信息传播到监视整个系统状态的Promise
中。使用withAttributes(supervisionStrategy)
也不起作用。在我看来,没有办法监视GraphStageLogic
中引发的异常了吗? failStage
是最终的,就像GraphStageLogic
的整个API一样。
答案 0 :(得分:0)
在定义用于实现图的ActorMaterializer时使用决策程序应该起作用:
implicit val materializer: ActorMaterializer = ActorMaterializer(
ActorMaterializerSettings(actorSystem).withSupervisionStrategy(decider))
其中决策者是典型的
val decider: Supervision.Decider = {
case e: IllegalArgumentException => ....
}