我有一个演员与数据库连接。当从控制器上调用fire&forget模型调用actor时,我们选择tell方法而不是ask。执行数据库操作时出现问题时,我们会收到异常。我们不会捕获异常或在那里进行严格的错误处理。那么,在这种情况下,与数据库的连接会发生什么,因为它突然退出异常?将被删除或仍悬挂并创建被攻击的线程。请指教。
在使用tell方法在Akka中调用Actor处理数据库时,忽略错误处理也是明智的。
Akka演员的主要原则之一是让它粉碎。因此,演员获得异常是可以的,默认情况下它将由其主管重新启动。您可以在他们的文档fault-tolerance-akka中找到有关Akka中容错的更多信息。所以当有一个例外情况时,这些是解决此问题的2个快速解决方案:
我更喜欢第一种选择,但是火与遗忘模型总是存在这种风险。另一个选项但更难实现的是向actor添加持久性并将消息记录为事件。在这种情况下,演员将拥有在粉碎后重试操作所需的信息。