如何修复在akka scala中生成持久参与者时出现的断路器超时异常?

3vpjnl9f  于 2022-11-06  发布在  Scala
关注(0)|答案(2)|浏览(149)

有没有人在akka的持久系统上遇到过断路器超时。我相信这是当akka无法重新加载保存的事件快照时发生的。我试着通过调整conf并添加snapshot-store-plugin-fallback.snapshot-is-optional = true来绕过这个重新加载。但是这也不起作用。
我使用的是jdbc-journal,其中jdbc-snapshot-store作为snapshot-store.plugin
在这方面的任何帮助都是感激不尽的!

Supervisor StopSupervisor saw failure: Exception during recovery. Last known sequence number [0]. PersistenceId [UCPersistenceId], due to: Exception during recovery. Last known sequence number [0]. PersistenceId [UCPersistenceId], due to: Circuit Breaker Timed out.","context":"default","exception":"akka.persistence.typed.internal.JournalFailureException: Exception during recovery. Last known sequence number [0]. PersistenceId [UCPersistenceId], due to: Exception during recovery. Last known sequence number [0]. PersistenceId [UCPersistenceId], due to: Circuit Breaker Timed out.

在异常块之后,我也会收到此警告。

{"logger":"org.mariadb.jdbc.HostAddress","message":"Aurora recommended connection URL must only use cluster end-point like \"jdbc:mariadb:aurora://xx.cluster-yy.zz.rds.amazonaws.com\". Using end-point permit auto-discovery of new replicas","context":"default"}
dced5bon

dced5bon1#

电路断路器超时不是实际的异常。它是另一个异常的症状,源异常。我建议查看数据库服务器日志以了解实际发生的异常。

dba5bblo

dba5bblo2#

正如@Debasish-Ghosh(我强烈推荐他的书 Functional and Reactive Domain Modeling)所指出的,断路器异常只是另一个故障的症状。
从警告中可以看出,您可能已将日志和/或快照配置为指向特定的Aurora副本,而不是群集端点。如果该特定副本不可用,则到该副本的连接将失败,并最终触发断路器;这样做效果是使从日志读取或向日志写入的尝试更快地失败(以便不消耗过多的资源,并且如果失败是由于过载而导致的,则给予DB一个恢复的机会)。
因此,对于这个特定问题,我建议在您的配置中使用Aurora群集端点,这样就不会出现副本不可用的问题。

相关问题