#scala #akka #in-memory #akka-persistence
Вопрос:
Я пытался получить журнал чтения для встроенного журнала сохраняемости akka в памяти/моментального снимка. Мое восстановление и настойчивость работают, однако я просто пытаюсь написать набор тестов для этого, поэтому мне нужно иметь возможность напрямую считывать значения из журнала. Это дает мне ошибку, которую я не понимаю и о которой не нахожу никакой информации. Я получаю следующую ошибку:
Unable to create read journal plugin instance for path [akka.persistence.journal.inmem], class [akka.persistence.journal.inmem.InmemJournal]!
java.lang.IllegalArgumentException: Unable to create read journal plugin instance for path [akka.persistence.journal.inmem], class [akka.persistence.journal.inmem.InmemJournal]!
Мой код для создания журнала чтения следующий код:
val readJournal =
PersistenceQuery(system).readJournalFor("akka.persistence.journal.inmem").asInstanceOf[ReadJournal
with EventsByPersistenceIdQuery]
// issue query to journal
val source: Source[EventEnvelope, NotUsed] =
readJournal.eventsByPersistenceId("replicationModel", 0, Long.MaxValue)
// materialize stream, consuming events
source.runForeach { event =>
println("Event: " event)
}
Я также добавил этот фрагмент конфигурации в файл application.conf:
akka.persistence.journal.inmem {
# Class name of the plugin.
class = "akka.persistence.journal.inmem.InmemJournal"
# Dispatcher for the plugin actor.
plugin-dispatcher = "akka.actor.default-dispatcher"
# Turn this on to test serialization of the events
test-serialization = off
}
# Local file system snapshot store plugin.
akka.persistence.snapshot-store.local {
# Class name of the plugin.
class = "akka.persistence.snapshot.local.LocalSnapshotStore"
# Dispatcher for the plugin actor.
plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
# Dispatcher for streaming snapshot IO.
stream-dispatcher = "akka.persistence.dispatchers.default-stream-dispatcher"
# Storage location of snapshot files.
dir = "snapshots"
# Number load attempts when recovering from the latest snapshot fails
# yet older snapshot files are available. Each recovery attempt will try
# to recover using an older than previously failed-on snapshot file
# (if any are present). If all attempts fail the recovery will fail and
# the persistent actor will be stopped.
max-load-attempts = 3
}