如何在崩溃后重新创建动态创建的持久化AKKA角色

如何在崩溃后重新创建动态创建的持久化AKKA角色,akka,akka-persistence,Akka,Akka Persistence,我正在为一个项目评估Akka,并试图通过将参与者状态保存在高可用性数据存储中,来确定我是否能够通过Akka持久性实现服务的高可用性。(我不想使用Akka集群) 我理解保存actors状态的概念,但是我正在努力找到一种方法,在备份主机上恢复失败(崩溃)的服务时重新创建actors(而不是actors状态) 在我的设计中,有许多动态创建的参与者,只有少数是在服务启动时创建的 我怎样才能知道恢复后我必须创造什么样的演员?还是我试图做一些根本错误的事情?我认为你的问题不准确。例如,您会问如何找出恢复时必

我正在为一个项目评估Akka,并试图通过将参与者状态保存在高可用性数据存储中,来确定我是否能够通过Akka持久性实现服务的高可用性。(我不想使用Akka集群)

我理解保存actors状态的概念,但是我正在努力找到一种方法,在备份主机上恢复失败(崩溃)的服务时重新创建actors(而不是actors状态)

在我的设计中,有许多动态创建的参与者,只有少数是在服务启动时创建的


我怎样才能知道恢复后我必须创造什么样的演员?还是我试图做一些根本错误的事情?

我认为你的问题不准确。例如,您会问
如何找出恢复时必须创建哪些角色?
。。。我们怎么知道?只有您知道您的系统中存在哪些参与者。为什么不重新启动它们呢?似乎只有你知道为什么不合适,但你没有告诉我们为什么,所以我们帮不了多少忙

也就是说,我将尝试进行一些猜测,并提出一种前进的方法

我首先要做的猜测是:

  • 在动态创建参与者的基础上,还可以动态终止它们
  • 您希望重新启动动态创建的、在崩溃时仍在运行的所有参与者,但不希望重新启动已经终止的参与者
如果是这样,请继续阅读。。。否则,请检查您的问题

请考虑
现在运行的参与者是系统状态的一部分。该状态随以下事件而改变:

  • 一个演员被动态地启动了
  • 一名演员被解雇了
您可以让一个持久参与者管理该状态,并在发出上述事件时对其进行更新

您应该将该参与者添加到总是在服务启动时启动的参与者列表中


当该参与者的重播完成时(它将收到
RecoveryCompleted
消息:),您将重建
当前正在运行的参与者的状态。然后,您只需根据状态动态地重新创建所有参与者。

好问题-我认为akka文档中缺少了一个关于如何处理容错的重要部分(akka文档中的容错仅仅意味着参与者抛出了一个异常)。