Akka故障恢复:选通状态

Akka故障恢复:选通状态,akka,distributed-computing,actor,Akka,Distributed Computing,Actor,表示如果与远程系统的链接处于门控状态,则所有出站消息都将被丢弃。这是否意味着它们将立即被交付到死信中,或者只有当国家变为隔离状态时,它们才会被交付到死信中 日志明确说明隔离状态,但不是选通状态: Association with remote system [...] has failed, address is now gated for [5000] ms. Reason: [Disassociated] Association to [...] having UID [...] is i

表示如果与远程系统的链接处于门控状态,则所有出站消息都将被丢弃。这是否意味着它们将立即被交付到死信中,或者只有当国家变为隔离状态时,它们才会被交付到死信中

日志明确说明隔离状态,但不是选通状态:

Association with remote system [...] has failed,
address is now gated for [5000] ms. Reason: [Disassociated]

Association to [...] having UID [...] is irrecoverably failed.
UID is now quarantined and all messages to this UID will be delivered to dead letters. 
Remote actorsystem must be restarted to recover from this situation.
  • 如果由于成功的入站连接,远程系统从门控状态转换为活动状态,是否会重新发送所有丢弃的出站消息

  • 远程参与者上注册的DeathWatch是否足以检测丢弃的消息,或者我是否需要单独处理门控(但不隔离)系统的消息故障


当所有消息都进入死信状态时,它们不会被缓冲并以任何方式重新发送-换句话说,如果您希望您需要在参与者中为此添加额外的逻辑,则无法保证交付(文档的相关部分:)

DeathWatch
可以避免向已死亡的参与者发送消息,但是不能保证您在参与者死亡后但在参与者收到终止消息之前没有向其发送消息,因此这不足以建立传递保证

根据您的需要,实现交付保证可以像远程参与者的简单确认协议一样“轻”,也可以像
AtLeastOnce
(docs:)一样“重”,它将在不丢失消息的情况下处理节点崩溃