假设我们有两个节点,节点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回复的“询问”的“未来”发生了什么?我假设自从节点死亡后,“未来”不再存在。实际上,B的回复将变成死信。
我的理论正确吗?
1条答案
按热度按时间tpgth1q71#
context.ask
并不会产生一个未来,而是一个经过调整的信息。由于ActorContext
并不知道这个参与者只是一个簇碎片化实体的化身,所以你的基本直觉是有效的:来自B的回复将不会被传递。