处理Akka Typed中死去的演员

时间:2019-05-12 23:06:40

标签: scala akka dead-letter akka-typed

我有一些演员会在空闲或其他系统限制要求他们自杀时自杀。收到ActorRef的演员正在监视他们的Terminated(ref),但是在竞争终止之前,有一种竞争条件是要发送给演员的消息,我正在努力寻找干净的方法。处理方式。

我正在考虑订阅DeadLetter,并用它来通知发件人他们的ref是陈旧的,并且他们需要获取或产生新的目标ActorRef

但是,在Akka Typed中,除了使用非类型化的共存路径之外,我找不到其他方法来解决问题,所以我认为我很可能会遇到这种错误。

是否存在一种更好的模式来处理死掉的下游ref并将消息重定向到新的下游ref,而不需要为每条消息进行某种形式的确认握手?

1 个答案:

答案 0 :(得分:0)

将死信视为调试工具,而不是用于实现交付保证的东西(对于Akka输入和未输入都是true)。

如果行动者需要确定消息已传递,则消息协议将需要包含确认。要重新发送actor,还需要为正在运行/尚未确认的消息保留一个缓冲区,以便能够重新发送。

我们对消息传递的不同可靠性级别的抽象有一些想法,我们将看看它是否适合Akka 2.6或以后发生,其原型为:https://github.com/akka/akka/pull/25099