Отключение журнала в сохранении AKKA - PullRequest
0 голосов
/ 24 июня 2019

Я делаю тест производительности для постоянного актера AKKA и хочу узнать, как пишется в журнале.

Простой вопрос, но я ничего не нашел в документации:

Как отключить журнал из файла конфигурации?Я ищу что-то наподобие плагина mock или null Journal.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 25 июня 2019

AFAIK, не существует плагина для сохранения персоны akka, который просто ничего не делает - поскольку он в основном побеждает цель сохранения. Обратите внимание, что akka-persistence использует подход eventsourcing , поэтому journal является «основным» хранилищем, а моментальные снимки являются оптимизацией для ускорения восстановления состояния после сбоя / перезапуска субъекта и т. Д. Таким образом, вы не можете полностью отключить журнал.

Наиболее близким к тому, что вам нужно, может быть в памяти постоянство или локальный уровеньDB постоянство.

Кроме того, есть список плагинов, созданных сообществом для персистентности - вы можете найти что-то, соответствующее вашему варианту использования.

Однако я бы порекомендовал протестировать производительность персистентности с помощью фактического плагина персистентности, который вы будете использовать в производственном процессе - результаты различаются для разных бэкэндов персистентности (например, Cassandra, DynamoDb, JDBC, Mongo и т. Д.)

0 голосов
/ 29 июня 2019

Я создал проект с постоянным плагином (журнал + моментальные снимки), который в основном не делает ничего, кроме игнорирования.

Конечно, использование этого плагина не восстановится после сбоя, поэтому ваша система не будетresilient.

Это проект: https://github.com/angelcervera/akka-persistence-nowhere

Как его использовать:

  1. Импорт или добавление в classpath
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"
Перезаписать приложение по умолчанию.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"
}
...