【问题标题】:Creating custom Akka Supervisor that shuts down all linked actors创建自定义 Akka 主管以关闭所有链接的参与者
【发布时间】:2019-10-05 01:59:40
【问题描述】:

This earlier question 建议对主管演员调用“停止”将关闭所有链接的演员。但是,如果创建一个“自定义”actor(不是通过工厂),似乎不会发生这种自动关闭。比如another question的回答中的这段代码:

class Module1 extends Actor {
   self.faultHandler = OneForOneStrategy(List(classOf[Throwable]), 5, 5000)

   def receive = {
       case Register(actor) =>
           self.link(actor)
   }
}

如果在上述 Module1 演员上调用了“停止”,则链接到它的演员不会关闭。有没有办法让自定义演员自动关闭链接的演员?或者如果您想创建自定义演员,这只是您必须自己编写的东西?

谢谢!

【问题讨论】:

    标签: scala actor akka


    【解决方案1】:

    您可以致电:

    self.linkedActors.values.iterator
    

    然后给他们发送一个PoisonPillstop()

    【讨论】:

    • 处于一种挑剔的情绪中:可能要提一下 postStop() 是放置此代码的理想位置 ;-)
    • 我在 Akka 源代码的 SupervisorActor 类中看到了一些类似的代码。所以我可以肯定地从 SupervisorActor 复制并粘贴代码到我自己的自定义主管类中。我只是想知道是否有比复制粘贴编码更好的方法。我是否需要将其他行为复制并粘贴到我的自定义主管中?喜欢重启已经崩溃的子 Actor 的能力?
    • 不,应该是这样。不过,应该注意的是,您不需要在 2.0-M1 及更高版本中手动执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多