在 AKKA 持久性中禁用日志

Disabling journal in AKKA persistence

我正在对 AKKA 持久性 actor 进行性能测试,我想知道写入日志的影响。

简单的问题,但我在文档中没有找到任何内容:

如何从配置文件中禁用日志?我正在寻找类似模拟或空日志插件的东西。

有什么想法吗?

AFAIK,没有什么 akka 持久性插件什么都不做——因为它基本上违背了持久性的目的。请注意,akka-persistence 使用 eventsourcing 方法,因此 journal 是 "main" 存储,快照是一种优化,可在 actor [= 之后加速状态恢复24=]。所以你不能真正完全禁用日志。

最接近您想要的可能是in-memory persistence, or Local LevelDB持久性。

此外,还有一个 list of community-built plugins for persistence - 您或许可以找到与您的用例相匹配的内容。

但是,我建议使用您将在生产中使用的实际持久性插件来测试持久性的性能 - 结果因不同的持久性后端而异(例如 Cassandra vs. DynamoDb vs. JDBC vs. Mongo, 等等)

我创建了一个带有持久性插件(日志+快照)的项目,除了忽略之外基本上什么都不做。

当然,使用这个插件不会在失败后恢复,所以你的系统不会有弹性。

这是项目:https://github.com/angelcervera/akka-persistence-nowhere

使用方法:

  1. 在类路径中导入或添加
resolvers += "osm4scala repo" at "http://dl.bintray.com/angelcervera/maven" // If 
it's not found in the main maven repository. 
libraryDependencies += "com.acervera.akka" %% "akka-persistence-nowhere" % "1.0.1"
  1. 覆盖您的默认值application.conf
akka {
  persistence {
    journal.plugin = "disable-journal-store"
    snapshot-store.plugin = "disable-snapshot-store"
  }
}

disable-journal-store {
  class = "com.acervera.akka.persistence.nowhere.AkkaPersistenceNowhereJournal"
  plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
}

disable-snapshot-store {
  class = "com.acervera.akka.persistence.nowhere.AkkaPersistenceNowhereSnapshotStore"
  plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
}