#Akka Persistence Redis Plugin
This is a plugin for Akka Persistence that uses Redis as backend.
This plugin was developed for Akka 2.3.x and Scala 2.11.x It uses rediscala, an asynchronous Redis client written with Akka and Scala. Deprecated methods since Akka 2.3.4 are NOT implemented. As a result, some tests in TCK fail. Rest of methods are tested with the test harness included in this project.
build.sbt
resolvers += Resolver.jcenterRepo // Adds Bintray to resolvers for akka-persistence-redis and rediscala
libraryDependencies ++= Seq("com.hootsuite" %% "akka-persistence-redis" % "0.2.1")
akka.persistence.journal.plugin = "akka-persistence-redis.journal"
akka.persistence.snapshot-store.plugin = "akka-persistence-redis.snapshot"
From rediscala
redis {
host = "localhost"
port = 6379
}
Journal and snapshot use "journal:" and "snapshot:" as part of keys respectively as it is a good practice to create namespace for keys reference
In order to enforce ordering, journal entries and snapshots are inserted into Sorted Set and sorted by sequenceNr
By default, global ExecutionContext is used for Redis operation. This blocks calling thread for synchronous Akka Persistence APIs. Override JournalExecutionContext trait to use custom thread pool if blocking in global is undesirable.
trait CustomExecutionContext extends JournalExecutionContext {
override implicit val ec: ExecutionContext = ExecutionContext.fromExecutorService(Executors.newSingleThreadExecutor())
}
Contribute by submitting a PR and a bug report in GitHub.