1

我正在尝试将现有(演示)项目从 Akka.Net 1.0.8 升级到更新的版本(1.3.2 或其他)。

我一直坚持要加载 SQL 服务器持久性。我已采取以下步骤:

  1. 创建一个空白项目,并包含 Akka.Persistence.SqlServer 包及其所有依赖项
  2. 从这里复制 HOCON 配置示例:
    • 将数据库连接字符串更改为现有数据库
    • 将自动初始化设置为“开”
    • 修复了 akka.persistence.journal-store.sql-server.plugin-dispatcher 中的双引号问题
  3. 创建了一个演员系统
  4. 检查 SQL 服务器配置是否存在我的连接字符串

结果:

  • 1.3.2:连接字符串不存在(似乎是默认的回退配置),数据库中没有任何反应
  • 1.0.8:存在连接字符串,配置似乎正确,表是在空数据库中创建的。

这是我使用的 HOCON 配置:

akka.persistence{
journal {
  plugin = "akka.persistence.journal.sql-server"
    sql-server {
        # qualified type name of the SQL Server persistence journal actor
        class = "Akka.Persistence.SqlServer.Journal.SqlServerJournal, Akka.Persistence.SqlServer"

        # dispatcher used to drive journal actor
        plugin-dispatcher = "akka.actor.default-dispatcher"

        # connection string used for database access
        connection-string = "Data Source=(LocalDB)\\MSSQLLocalDB;Initial Catalog=AkkaPersistence;Integrated Security=True"

        # default SQL commands timeout
        connection-timeout = 30s

        # SQL server schema name to table corresponding with persistent journal
        schema-name = dbo

        # SQL server table corresponding with persistent journal
        table-name = EventJournal

        # should corresponding journal table be initialized automatically
        auto-initialize = on

        # timestamp provider used for generation of journal entries timestamps
        timestamp-provider = "Akka.Persistence.Sql.Common.Journal.DefaultTimestampProvider, Akka.Persistence.Sql.Common"

        # metadata table
        metadata-table-name = Metadata
    }
}

snapshot-store {
  plugin = "akka.persistence.snapshot-store.sql-server"
    sql-server {

        # qualified type name of the SQL Server persistence journal actor
        class = "Akka.Persistence.SqlServer.Snapshot.SqlServerSnapshotStore, Akka.Persistence.SqlServer"

        # dispatcher used to drive journal actor
        plugin-dispatcher = "akka.actor.default-dispatcher"

        # connection string used for database access
        connection-string = "Data Source=(LocalDB)\\MSSQLLocalDB;Initial Catalog=AkkaPersistence;Integrated Security=True"

        # default SQL commands timeout
        connection-timeout = 30s

        # SQL server schema name to table corresponding with persistent journal
        schema-name = dbo

        # SQL server table corresponding with persistent journal
        table-name = SnapshotStore

        # should corresponding journal table be initialized automatically
        auto-initialize = on
    }
}
}

有没有办法解决HOCON配置的加载问题?

4

1 回答 1

1

这里的麻烦在于 Akka.Persistence.SqlServer 中使用的 SQL 在 1.0.8 和 1.3.2 之间发生了显着变化。

恕我直言,如果它只是一个演示应用程序,请删除并重新创建表。这是最简单的路线。

否则,您将不得不编写一个迁移脚本以从 1.0.8 格式转换到 1.3.2 中的稳定格式:https ://github.com/akkadotnet/Akka.Persistence.SqlServer#table-schema

于 2018-02-21T18:09:17.903 回答