--- /dev/null
+###########################################################
+# Akka Persistence Extension Reference Configuration File #
+###########################################################
+
+# This is the reference config file that contains all the default settings.
+# Make your edits in your application.conf in order to override these settings.
+
+# Directory of persistence journal and snapshot store plugins is available at the
+# Akka Community Projects page http://akka.io/community/
+
+# Default persistence extension settings.
+akka.persistence {
+
+ # When starting many persistent actors at the same time the journal
+ # and its data store is protected from being overloaded by limiting number
+ # of recoveries that can be in progress at the same time. When
+ # exceeding the limit the actors will wait until other recoveries have
+ # been completed.
+ max-concurrent-recoveries = 50
+
+ # Fully qualified class name providing a default internal stash overflow strategy.
+ # It needs to be a subclass of akka.persistence.StashOverflowStrategyConfigurator.
+ # The default strategy throws StashOverflowException.
+ internal-stash-overflow-strategy = "akka.persistence.ThrowExceptionConfigurator"
+ journal {
+ # Absolute path to the journal plugin configuration entry used by
+ # persistent actor by default.
+ # Persistent actor can override `journalPluginId` method
+ # in order to rely on a different journal plugin.
+ plugin = ""
+ # List of journal plugins to start automatically. Use "" for the default journal plugin.
+ auto-start-journals = []
+ }
+ snapshot-store {
+ # Absolute path to the snapshot plugin configuration entry used by
+ # persistent actor by default.
+ # Persistent actor can override `snapshotPluginId` method
+ # in order to rely on a different snapshot plugin.
+ # It is not mandatory to specify a snapshot store plugin.
+ # If you don't use snapshots you don't have to configure it.
+ # Note that Cluster Sharding is using snapshots, so if you
+ # use Cluster Sharding you need to define a snapshot store plugin.
+ plugin = ""
+ # List of snapshot stores to start automatically. Use "" for the default snapshot store.
+ auto-start-snapshot-stores = []
+ }
+ # used as default-snapshot store if no plugin configured
+ # (see `akka.persistence.snapshot-store`)
+ no-snapshot-store {
+ class = "akka.persistence.snapshot.NoSnapshotStore"
+ }
+ # Default reliable delivery settings.
+ at-least-once-delivery {
+ # Interval between re-delivery attempts.
+ redeliver-interval = 5s
+ # Maximum number of unconfirmed messages that will be sent in one
+ # re-delivery burst.
+ redelivery-burst-limit = 10000
+ # After this number of delivery attempts a
+ # `ReliableRedelivery.UnconfirmedWarning`, message will be sent to the actor.
+ warn-after-number-of-unconfirmed-attempts = 5
+ # Maximum number of unconfirmed messages that an actor with
+ # AtLeastOnceDelivery is allowed to hold in memory.
+ max-unconfirmed-messages = 100000
+ }
+ # Default persistent extension thread pools.
+ dispatchers {
+ # Dispatcher used by every plugin which does not declare explicit
+ # `plugin-dispatcher` field.
+ default-plugin-dispatcher {
+ type = PinnedDispatcher
+ executor = "thread-pool-executor"
+ }
+ # Default dispatcher for message replay.
+ default-replay-dispatcher {
+ type = Dispatcher
+ executor = "fork-join-executor"
+ fork-join-executor {
+ parallelism-min = 2
+ parallelism-max = 8
+ }
+ }
+ # Default dispatcher for streaming snapshot IO
+ default-stream-dispatcher {
+ type = Dispatcher
+ executor = "fork-join-executor"
+ fork-join-executor {
+ parallelism-min = 2
+ parallelism-max = 8
+ }
+ }
+ }
+
+ # Fallback settings for journal plugin configurations.
+ # These settings are used if they are not defined in plugin config section.
+ journal-plugin-fallback {
+
+ # Fully qualified class name providing journal plugin api implementation.
+ # It is mandatory to specify this property.
+ # The class must have a constructor without parameters or constructor with
+ # one `com.typesafe.config.Config` parameter.
+ class = ""
+
+ # Dispatcher for the plugin actor.
+ plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
+
+ # Dispatcher for message replay.
+ replay-dispatcher = "akka.persistence.dispatchers.default-replay-dispatcher"
+
+ # Removed: used to be the Maximum size of a persistent message batch written to the journal.
+ # Now this setting is without function, PersistentActor will write as many messages
+ # as it has accumulated since the last write.
+ max-message-batch-size = 200
+
+ # If there is more time in between individual events gotten from the journal
+ # recovery than this the recovery will fail.
+ # Note that it also affects reading the snapshot before replaying events on
+ # top of it, even though it is configured for the journal.
+ recovery-event-timeout = 30s
+
+ circuit-breaker {
+ max-failures = 10
+ call-timeout = 10s
+ reset-timeout = 30s
+ }
+
+ # The replay filter can detect a corrupt event stream by inspecting
+ # sequence numbers and writerUuid when replaying events.
+ replay-filter {
+ # What the filter should do when detecting invalid events.
+ # Supported values:
+ # `repair-by-discard-old` : discard events from old writers,
+ # warning is logged
+ # `fail` : fail the replay, error is logged
+ # `warn` : log warning but emit events untouched
+ # `off` : disable this feature completely
+ mode = repair-by-discard-old
+
+ # It uses a look ahead buffer for analyzing the events.
+ # This defines the size (in number of events) of the buffer.
+ window-size = 100
+
+ # How many old writerUuid to remember
+ max-old-writers = 10
+
+ # Set this to `on` to enable detailed debug logging of each
+ # replayed event.
+ debug = off
+ }
+ }
+
+ # Fallback settings for snapshot store plugin configurations
+ # These settings are used if they are not defined in plugin config section.
+ snapshot-store-plugin-fallback {
+
+ # Fully qualified class name providing snapshot store plugin api
+ # implementation. It is mandatory to specify this property if
+ # snapshot store is enabled.
+ # The class must have a constructor without parameters or constructor with
+ # one `com.typesafe.config.Config` parameter.
+ class = ""
+
+ # Dispatcher for the plugin actor.
+ plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
+
+ circuit-breaker {
+ max-failures = 5
+ call-timeout = 20s
+ reset-timeout = 60s
+ }
+ }
+
+ fsm {
+ # PersistentFSM saves snapshots after this number of persistent
+ # events. Snapshots are used to reduce recovery times.
+ # When you disable this feature, specify snapshot-after = off.
+ # To enable the feature, specify a number like snapshot-after = 1000
+ # which means a snapshot is taken after persisting every 1000 events.
+ snapshot-after = off
+ }
+}
+
+# Protobuf serialization for the persistent extension messages.
+akka.actor {
+ serializers {
+ akka-persistence-message = "akka.persistence.serialization.MessageSerializer"
+ akka-persistence-snapshot = "akka.persistence.serialization.SnapshotSerializer"
+ }
+ serialization-bindings {
+ "akka.persistence.serialization.Message" = akka-persistence-message
+ "akka.persistence.serialization.Snapshot" = akka-persistence-snapshot
+ }
+ serialization-identifiers {
+ "akka.persistence.serialization.MessageSerializer" = 7
+ "akka.persistence.serialization.SnapshotSerializer" = 8
+ }
+}
+
+
+###################################################
+# Persistence plugins included with the extension #
+###################################################
+
+# In-memory journal plugin.
+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"
+}
+
+# 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
+}
+
+# LevelDB journal plugin.
+# Note: this plugin requires explicit LevelDB dependency, see below.
+akka.persistence.journal.leveldb {
+ # Class name of the plugin.
+ class = "akka.persistence.journal.leveldb.LeveldbJournal"
+ # Dispatcher for the plugin actor.
+ plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
+ # Dispatcher for message replay.
+ replay-dispatcher = "akka.persistence.dispatchers.default-replay-dispatcher"
+ # Storage location of LevelDB files.
+ dir = "journal"
+ # Use fsync on write.
+ fsync = on
+ # Verify checksum on read.
+ checksum = off
+ # Native LevelDB (via JNI) or LevelDB Java port.
+ native = on
+ # Number of deleted messages per persistence id that will trigger journal compaction
+ compaction-intervals {
+ }
+}
+
+# Shared LevelDB journal plugin (for testing only).
+# Note: this plugin requires explicit LevelDB dependency, see below.
+akka.persistence.journal.leveldb-shared {
+ # Class name of the plugin.
+ class = "akka.persistence.journal.leveldb.SharedLeveldbJournal"
+ # Dispatcher for the plugin actor.
+ plugin-dispatcher = "akka.actor.default-dispatcher"
+ # Timeout for async journal operations.
+ timeout = 10s
+ store {
+ # Dispatcher for shared store actor.
+ store-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
+ # Dispatcher for message replay.
+ replay-dispatcher = "akka.persistence.dispatchers.default-replay-dispatcher"
+ # Storage location of LevelDB files.
+ dir = "journal"
+ # Use fsync on write.
+ fsync = on
+ # Verify checksum on read.
+ checksum = off
+ # Native LevelDB (via JNI) or LevelDB Java port.
+ native = on
+ # Number of deleted messages per persistence id that will trigger journal compaction
+ compaction-intervals {
+ }
+ }
+}
+
+akka.persistence.journal.proxy {
+ # Class name of the plugin.
+ class = "akka.persistence.journal.PersistencePluginProxy"
+ # Dispatcher for the plugin actor.
+ plugin-dispatcher = "akka.actor.default-dispatcher"
+ # Set this to on in the configuration of the ActorSystem
+ # that will host the target journal
+ start-target-journal = off
+ # The journal plugin config path to use for the target journal
+ target-journal-plugin = ""
+ # The address of the proxy to connect to from other nodes. Optional setting.
+ target-journal-address = ""
+ # Initialization timeout of target lookup
+ init-timeout = 10s
+}
+
+akka.persistence.snapshot-store.proxy {
+ # Class name of the plugin.
+ class = "akka.persistence.journal.PersistencePluginProxy"
+ # Dispatcher for the plugin actor.
+ plugin-dispatcher = "akka.actor.default-dispatcher"
+ # Set this to on in the configuration of the ActorSystem
+ # that will host the target snapshot-store
+ start-target-snapshot-store = off
+ # The journal plugin config path to use for the target snapshot-store
+ target-snapshot-store-plugin = ""
+ # The address of the proxy to connect to from other nodes. Optional setting.
+ target-snapshot-store-address = ""
+ # Initialization timeout of target lookup
+ init-timeout = 10s
+}
+
+# LevelDB persistence requires the following dependency declarations:
+#
+# SBT:
+# "org.iq80.leveldb" % "leveldb" % "0.7"
+# "org.fusesource.leveldbjni" % "leveldbjni-all" % "1.8"
+#
+# Maven:
+# <dependency>
+# <groupId>org.iq80.leveldb</groupId>
+# <artifactId>leveldb</artifactId>
+# <version>0.7</version>
+# </dependency>
+# <dependency>
+# <groupId>org.fusesource.leveldbjni</groupId>
+# <artifactId>leveldbjni-all</artifactId>
+# <version>1.8</version>
+# </dependency>