在AKKA持久性中禁用日记

时间:2019-06-24 18:19:42

标签: scala akka akka-persistence

我正在对AKKA执导演员进行性能测试,我想知道写给日记的影响。

一个简单的问题,但是我没有在文档中找到任何东西:

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

有什么主意吗?

2 个答案:

答案 0 :(得分:1)

AFAIK,没有akka持久性插件,它什么都不做-因为它基本上破坏了持久性的目的。请注意,akka-persistence使用eventsourcing方法,因此 journal 是“主要”存储,快照是在actor崩溃/重新启动等之后加快状态恢复的优化。因此,您无法真正完全禁用日记。

与您想要的最接近的可能是in-memory持久性或Local LevelDB持久性。

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

但是,我建议您使用生产中使用的实际持久性插件来测试持久性的性能-结果在不同的持久性后端(例如,Cassandra与DynamoDb,JDBC与Mongo等)之间会有所不同< / p>

答案 1 :(得分:0)

我创建了一个带有持久性插件(新闻+快照)的项目,该插件除了忽略外基本上什么也没做。

当然,使用此插件在失败后将无法恢复,因此您的系统将不会具有弹性。

这是项目: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. 覆盖默认应用程序。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"
}