数据库 – Akka演员:处理数据库失败而不丢失数据

前端之家收集整理的这篇文章主要介绍了数据库 – Akka演员:处理数据库失败而不丢失数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
脚本
应用程序的DB已经下降.这导致任何负责向DB提交重要数据的演员无法获得连接

首选行为
重要的数据在将来某个时候重新启动时会写入数据库.

当前实施
演员捕获DBException,将数据包裹在DBWriteFailed案例类中,并将消息发送到其主管.然后,主管将使用system.scheduler.scheduleOnce(…)在将来的某个时间安排另一个写入(例如1分钟),以便我们在等待数据库恢复时不要旋转太多.

这个实施肯定有效,但我觉得可能会有更好的方法.

>提交演员必须在成功提交后对原始发件人做出响应,协议会变得更加复杂.
>对提交actor的消息的定期流程不会以任何方式进行限制,并且actor将乐意处理新的消息,可能无法连接到每个其中的DB.
>如果邮件在此重试循环中被捕获了很长时间,则提交演员的邮箱将开始气球.重要的是要提交这些数据,但是如果应用程序由于内存过多使用而爬行停止或崩溃,那么这一点很重要.

我是一个akka的新手,而在主管策略方面我基本上没有经验,但我觉得我可以利用其中的一个来处理这些重试逻辑.

在akka中有一个常见的方法解决这样的问题?我在正确的轨道上还是应该朝着不同的方向前进?

任何帮助是赞赏.

解决方法

您可以使用 Akka Circuit Breaker来减少连接尝试.而不是使用调度程序作为重试队列,我将使用一个缓冲区(最大大小限制)在演员内,并重试那些当断路器再次关闭(关闭回调应该发送消息给自己的演员).另一种可能是将断路器与 stashing mailbox组合.

猜你在找的MsSQL相关文章