我有一个演员与数据库连接。当从控制器中调用actor时,将其激活并忘记模型时,我们选择了tell方法而不是ask。当执行数据库操作时出现问题时,我们得到了例外。我们不会捕获异常或在此处进行严格的错误处理。那么,在这种情况下,与数据库的连接由于异常突然退出而会发生什么?将其丢弃或仍然挂起并创建罢工的线程。请指教。
在使用tell方法在Akka中调用Actor来处理数据库时,忽略错误处理也是明智的选择。
答案 0 :(得分:0)
让它暗恋是Akka Actor的主要原则之一。因此,actor得到一个异常是可以的,默认情况下它将由其主管重新启动。您可以在Akka的文档fault-tolerance-akka中找到有关容错的更多信息 因此,当有例外时,这是解决此问题的两种快速解决方案:
我更喜欢第一种选择,但是火灾和遗忘模型始终存在这种风险。另一种更难实现的选择是向参与者添加持久性并将消息记录为事件。在这种情况下,actor将获得暗恋后重试操作所需的信息。