【问题标题】:How can I force Akka.net Postgres persistence to reconnect如何强制 Akka.net Postgres 持久性重新连接
【发布时间】:2022-12-06 06:00:41
【问题描述】:

我在使用 Postgres 插件的持久性参与者方面遇到了一些问题,在数据库中断后,参与者似乎永远无法重新连接到数据库。

坚持不懈的演员在 1 分钟不活动后停止,所以我一直在获得新演员,但他们似乎永远无法重新连接。

重启运行 actor 系统的 pod 可以解决这个问题。

我可以通过以下方式在本地复制它:

  • 正在停止数据库
  • 启动演员系统
  • 发送应强制恢复的消息
  • 恢复失败,因为没有数据库连接

然后,我在不重新启动 actor 系统的情况下启动数据库,并发送一条新消息,该消息生成一个新的持久性 actor,该 actor 因相同的数据库错误而失败。

有没有办法强制 Akka.Persistence 重新连接?

【问题讨论】:

    标签: akka.net akka.net-persistence


    【解决方案1】:

    有两种方法可以解决这个问题:

    1. 使用 BackoffSupervisor 重新创建实体演员 - 这将根据 exponential backoff schedule 重新创建演员。
    2. 或者使用第三方 Akka.Persistence.Extras NuGet package 重新创建实体参与者,它的工作方式与 BackoffSupervisor 类似,但能够保存未成功持久化的消息,前提是您实现了它期望的消息传递协议。该功能的文档在这里:https://devops.petabridge.com/articles/state-management/akkadotnet-persistence-failure-handling.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多