Jak*_*ene 11 database scala actor akka
场景
应用程序的数据库已关闭.这导致任何负责将重要数据提交给DB的任何actor都无法获得连接
首选行为
重要数据在将来某个时间重新启动时会写入数据库.
当前实现
actor捕获DBException,将数据包装在DBWriteFailed案例类中,并将消息发送给其主管.然后,主管使用system.scheduler.scheduleOnce(...)在将来某个时间(例如1分钟)安排另一次写入,这样我们就不会在等待DB重新启动时过多旋转.
这种实现肯定有效,但我觉得可能有更好的方法.
我是akka新手,在涉及主管策略方面,我基本缺乏经验,但我觉得我可以利用其中一个来处理一些重试逻辑.
在akka中有一个共同的方法来解决这样的问题吗?我是在正确的轨道上还是我应该向不同的方向前进?
任何帮助表示赞赏.
您可以使用Akka Circuit Breaker来减少连接尝试.不使用调度程序作为重试队列,我将在actor内部使用缓冲区(具有最大大小限制),并在断路器再次关闭时重试那些(onClose回调应该向自己的actor发送消息).另一种方法是将断路器与存储箱结合使用.