假设我有一台配置为在多个远程节点上创建actor的路由器。也许我有这样的配置:
akka {
actor {
deployment {
/fooRouter {
router = round-robin
resizer {
lower-bound = 2
upper-bound = 10
}
target {
nodes = ["akka://mana@10.0.1.1:2555", "akka://mana@10.0.1.2:2555"]
}
}
}
}
如果我们假装其中一个节点10.0.1.1由于某种原因丢失了与数据库服务器的连接,那么传递给它的所有消息都将导致失败。路由器是否有某种方式可以知道10.0.1.1节点实际上没用并停止使用它?
答案 0 :(得分:2)
不,目前还没有。您可以让失败节点上的演员自杀,但一旦调整器启动新节目,他们就会重新出现。即使有了集群支持 - 即将到来 - 这也不是自动的,因为与某些外部资源的连接不是集群可达性度量的一部分。这意味着您必须编写明确删除该节点的代码,然后可以将actor迁移到其他节点(详细信息尚未完全填充)。
所以,目前你必须把你自己的路由器写成一个真正的演员,这需要考虑到可达性。