我认为这里可能隐藏了一个使用 Akka 进行应用程序设计的更广泛的问题,但我会问如何建立一个监督树,其中“内核”或“顶级”监督员可能监督其他监督员的孩子,哪些监督员?
问问题
1538 次
1 回答
1
您可以从顶层的声明式主管开始
val kernel = Supervisor(
SupervisorConfig(
OneForOneStrategy(List(classOf[Exception]), 3, 1000),
Supervise(
actorOf[Module1],
Permanent) ::
Supervise(
actorOf[Module2],
Permanent) ::
Supervise(
actorOf[Module3],
Permanent) ::
Nil
)
)
其中模块 1 到 3 代表应用程序架构的下一个级别。每个模块本身都是其所有子角色的主管,并像例如
class Module1 extends Actor {
self.faultHandler = OneForOneStrategy(List(classOf[Throwable]), 5, 5000)
def receive = {
case Register(actor) =>
self.link(actor)
}
}
您可能会用更适合您的应用程序的内容替换“Register(actor)”消息,并且您可能希望跨越进一步以编程方式创建的主管层,但基本上这将是遵循的方法。
您将在有关Scala 容错或Java 容错的官方 akka 文档中找到更多详细信息(正如 Viktor 已评论的那样) 。
于 2011-06-06T10:33:47.093 回答