Akka 如果碎片演员a询问另一个演员B,但a在B回应之前被重新定位,会发生什么?
假设我们有两个节点。节点1包含参与者A,节点2包含参与者B 假设两个参与者之间的通信是这样实现的:Akka 如果碎片演员a询问另一个演员B,但a在B回应之前被重新定位,会发生什么?,akka,akka-cluster,akka-persistence,Akka,Akka Cluster,Akka Persistence,假设我们有两个节点。节点1包含参与者A,节点2包含参与者B 假设两个参与者之间的通信是这样实现的: val B_ref = sharding.entityRefFor(BTypeKey, B_ID) //inside A context.ask(B_ref, message(replyTo =_) { //... Translate B reply to A command } 消息发送后,节点1死亡,参与者A重新定位。等待B回复的问题的“未来”会怎样?我假设由于节点死亡,未来就不
val B_ref = sharding.entityRefFor(BTypeKey, B_ID)
//inside A
context.ask(B_ref, message(replyTo =_) {
//... Translate B reply to A command
}
消息发送后,节点1死亡,参与者A重新定位。等待B回复的问题的“未来”会怎样?我假设由于节点死亡,未来就不存在了。实际上,B的答复将变成一封死信
我的理论正确吗?
上下文。提问不会产生未来,而是一条经过调整的信息。由于ActorContext
不知道该参与者只是集群切分实体的化身,因此您的基本直觉是有效的:不会提供来自B的回复