1 ###########################################################
2 # Akka Persistence Extension Reference Configuration File #
3 ###########################################################
5 # This is the reference config file that contains all the default settings.
6 # Make your edits in your application.conf in order to override these settings.
8 # Directory of persistence journal and snapshot store plugins is available at the
9 # Akka Community Projects page http://akka.io/community/
11 # Default persistence extension settings.
14 # When starting many persistent actors at the same time the journal
15 # and its data store is protected from being overloaded by limiting number
16 # of recoveries that can be in progress at the same time. When
17 # exceeding the limit the actors will wait until other recoveries have
19 max-concurrent-recoveries = 50
21 # Fully qualified class name providing a default internal stash overflow strategy.
22 # It needs to be a subclass of akka.persistence.StashOverflowStrategyConfigurator.
23 # The default strategy throws StashOverflowException.
24 internal-stash-overflow-strategy = "akka.persistence.ThrowExceptionConfigurator"
26 # Absolute path to the journal plugin configuration entry used by
27 # persistent actor by default.
28 # Persistent actor can override `journalPluginId` method
29 # in order to rely on a different journal plugin.
31 # List of journal plugins to start automatically. Use "" for the default journal plugin.
32 auto-start-journals = []
35 # Absolute path to the snapshot plugin configuration entry used by
36 # persistent actor by default.
37 # Persistent actor can override `snapshotPluginId` method
38 # in order to rely on a different snapshot plugin.
39 # It is not mandatory to specify a snapshot store plugin.
40 # If you don't use snapshots you don't have to configure it.
41 # Note that Cluster Sharding is using snapshots, so if you
42 # use Cluster Sharding you need to define a snapshot store plugin.
44 # List of snapshot stores to start automatically. Use "" for the default snapshot store.
45 auto-start-snapshot-stores = []
47 # used as default-snapshot store if no plugin configured
48 # (see `akka.persistence.snapshot-store`)
50 class = "akka.persistence.snapshot.NoSnapshotStore"
52 # Default reliable delivery settings.
53 at-least-once-delivery {
54 # Interval between re-delivery attempts.
55 redeliver-interval = 5s
56 # Maximum number of unconfirmed messages that will be sent in one
58 redelivery-burst-limit = 10000
59 # After this number of delivery attempts a
60 # `ReliableRedelivery.UnconfirmedWarning`, message will be sent to the actor.
61 warn-after-number-of-unconfirmed-attempts = 5
62 # Maximum number of unconfirmed messages that an actor with
63 # AtLeastOnceDelivery is allowed to hold in memory.
64 max-unconfirmed-messages = 100000
66 # Default persistent extension thread pools.
68 # Dispatcher used by every plugin which does not declare explicit
69 # `plugin-dispatcher` field.
70 default-plugin-dispatcher {
71 type = PinnedDispatcher
72 executor = "thread-pool-executor"
74 # Default dispatcher for message replay.
75 default-replay-dispatcher {
77 executor = "fork-join-executor"
83 # Default dispatcher for streaming snapshot IO
84 default-stream-dispatcher {
86 executor = "fork-join-executor"
94 # Fallback settings for journal plugin configurations.
95 # These settings are used if they are not defined in plugin config section.
96 journal-plugin-fallback {
98 # Fully qualified class name providing journal plugin api implementation.
99 # It is mandatory to specify this property.
100 # The class must have a constructor without parameters or constructor with
101 # one `com.typesafe.config.Config` parameter.
104 # Dispatcher for the plugin actor.
105 plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
107 # Dispatcher for message replay.
108 replay-dispatcher = "akka.persistence.dispatchers.default-replay-dispatcher"
110 # Removed: used to be the Maximum size of a persistent message batch written to the journal.
111 # Now this setting is without function, PersistentActor will write as many messages
112 # as it has accumulated since the last write.
113 max-message-batch-size = 200
115 # If there is more time in between individual events gotten from the journal
116 # recovery than this the recovery will fail.
117 # Note that it also affects reading the snapshot before replaying events on
118 # top of it, even though it is configured for the journal.
119 recovery-event-timeout = 30s
127 # The replay filter can detect a corrupt event stream by inspecting
128 # sequence numbers and writerUuid when replaying events.
130 # What the filter should do when detecting invalid events.
132 # `repair-by-discard-old` : discard events from old writers,
134 # `fail` : fail the replay, error is logged
135 # `warn` : log warning but emit events untouched
136 # `off` : disable this feature completely
137 mode = repair-by-discard-old
139 # It uses a look ahead buffer for analyzing the events.
140 # This defines the size (in number of events) of the buffer.
143 # How many old writerUuid to remember
146 # Set this to `on` to enable detailed debug logging of each
152 # Fallback settings for snapshot store plugin configurations
153 # These settings are used if they are not defined in plugin config section.
154 snapshot-store-plugin-fallback {
156 # Fully qualified class name providing snapshot store plugin api
157 # implementation. It is mandatory to specify this property if
158 # snapshot store is enabled.
159 # The class must have a constructor without parameters or constructor with
160 # one `com.typesafe.config.Config` parameter.
163 # Dispatcher for the plugin actor.
164 plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
172 # Set this to true if successful loading of snapshot is not necessary.
173 # This can be useful when it is alright to ignore snapshot in case of
174 # for example deserialization errors. When snapshot loading fails it will instead
175 # recover by replaying all events.
176 # Don't set to true if events are deleted because that would
177 # result in wrong recovered state if snapshot load fails.
178 snapshot-is-optional = false
183 # PersistentFSM saves snapshots after this number of persistent
184 # events. Snapshots are used to reduce recovery times.
185 # When you disable this feature, specify snapshot-after = off.
186 # To enable the feature, specify a number like snapshot-after = 1000
187 # which means a snapshot is taken after persisting every 1000 events.
192 # Protobuf serialization for the persistent extension messages.
195 akka-persistence-message = "akka.persistence.serialization.MessageSerializer"
196 akka-persistence-snapshot = "akka.persistence.serialization.SnapshotSerializer"
198 serialization-bindings {
199 "akka.persistence.serialization.Message" = akka-persistence-message
200 "akka.persistence.serialization.Snapshot" = akka-persistence-snapshot
202 serialization-identifiers {
203 "akka.persistence.serialization.MessageSerializer" = 7
204 "akka.persistence.serialization.SnapshotSerializer" = 8
209 ###################################################
210 # Persistence plugins included with the extension #
211 ###################################################
213 # In-memory journal plugin.
214 akka.persistence.journal.inmem {
215 # Class name of the plugin.
216 class = "akka.persistence.journal.inmem.InmemJournal"
217 # Dispatcher for the plugin actor.
218 plugin-dispatcher = "akka.actor.default-dispatcher"
220 # Turn this on to test serialization of the events
221 test-serialization = off
224 # Local file system snapshot store plugin.
225 akka.persistence.snapshot-store.local {
226 # Class name of the plugin.
227 class = "akka.persistence.snapshot.local.LocalSnapshotStore"
228 # Dispatcher for the plugin actor.
229 plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
230 # Dispatcher for streaming snapshot IO.
231 stream-dispatcher = "akka.persistence.dispatchers.default-stream-dispatcher"
232 # Storage location of snapshot files.
234 # Number load attempts when recovering from the latest snapshot fails
235 # yet older snapshot files are available. Each recovery attempt will try
236 # to recover using an older than previously failed-on snapshot file
237 # (if any are present). If all attempts fail the recovery will fail and
238 # the persistent actor will be stopped.
239 max-load-attempts = 3
242 # LevelDB journal plugin.
243 # Note: this plugin requires explicit LevelDB dependency, see below.
244 akka.persistence.journal.leveldb {
245 # Class name of the plugin.
246 class = "akka.persistence.journal.leveldb.LeveldbJournal"
247 # Dispatcher for the plugin actor.
248 plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
249 # Dispatcher for message replay.
250 replay-dispatcher = "akka.persistence.dispatchers.default-replay-dispatcher"
251 # Storage location of LevelDB files.
253 # Use fsync on write.
255 # Verify checksum on read.
257 # Native LevelDB (via JNI) or LevelDB Java port.
259 # Number of deleted messages per persistence id that will trigger journal compaction
260 compaction-intervals {
264 # Shared LevelDB journal plugin (for testing only).
265 # Note: this plugin requires explicit LevelDB dependency, see below.
266 akka.persistence.journal.leveldb-shared {
267 # Class name of the plugin.
268 class = "akka.persistence.journal.leveldb.SharedLeveldbJournal"
269 # Dispatcher for the plugin actor.
270 plugin-dispatcher = "akka.actor.default-dispatcher"
271 # Timeout for async journal operations.
274 # Dispatcher for shared store actor.
275 store-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
276 # Dispatcher for message replay.
277 replay-dispatcher = "akka.persistence.dispatchers.default-replay-dispatcher"
278 # Storage location of LevelDB files.
280 # Use fsync on write.
282 # Verify checksum on read.
284 # Native LevelDB (via JNI) or LevelDB Java port.
286 # Number of deleted messages per persistence id that will trigger journal compaction
287 compaction-intervals {
292 akka.persistence.journal.proxy {
293 # Class name of the plugin.
294 class = "akka.persistence.journal.PersistencePluginProxy"
295 # Dispatcher for the plugin actor.
296 plugin-dispatcher = "akka.actor.default-dispatcher"
297 # Set this to on in the configuration of the ActorSystem
298 # that will host the target journal
299 start-target-journal = off
300 # The journal plugin config path to use for the target journal
301 target-journal-plugin = ""
302 # The address of the proxy to connect to from other nodes. Optional setting.
303 target-journal-address = ""
304 # Initialization timeout of target lookup
308 akka.persistence.snapshot-store.proxy {
309 # Class name of the plugin.
310 class = "akka.persistence.journal.PersistencePluginProxy"
311 # Dispatcher for the plugin actor.
312 plugin-dispatcher = "akka.actor.default-dispatcher"
313 # Set this to on in the configuration of the ActorSystem
314 # that will host the target snapshot-store
315 start-target-snapshot-store = off
316 # The journal plugin config path to use for the target snapshot-store
317 target-snapshot-store-plugin = ""
318 # The address of the proxy to connect to from other nodes. Optional setting.
319 target-snapshot-store-address = ""
320 # Initialization timeout of target lookup
324 # LevelDB persistence requires the following dependency declarations:
327 # "org.iq80.leveldb" % "leveldb" % "0.7"
328 # "org.fusesource.leveldbjni" % "leveldbjni-all" % "1.8"
332 # <groupId>org.iq80.leveldb</groupId>
333 # <artifactId>leveldb</artifactId>
334 # <version>0.7</version>
337 # <groupId>org.fusesource.leveldbjni</groupId>
338 # <artifactId>leveldbjni-all</artifactId>
339 # <version>1.8</version>