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"
174 # PersistentFSM saves snapshots after this number of persistent
175 # events. Snapshots are used to reduce recovery times.
176 # When you disable this feature, specify snapshot-after = off.
177 # To enable the feature, specify a number like snapshot-after = 1000
178 # which means a snapshot is taken after persisting every 1000 events.
183 # Protobuf serialization for the persistent extension messages.
186 akka-persistence-message = "akka.persistence.serialization.MessageSerializer"
187 akka-persistence-snapshot = "akka.persistence.serialization.SnapshotSerializer"
189 serialization-bindings {
190 "akka.persistence.serialization.Message" = akka-persistence-message
191 "akka.persistence.serialization.Snapshot" = akka-persistence-snapshot
193 serialization-identifiers {
194 "akka.persistence.serialization.MessageSerializer" = 7
195 "akka.persistence.serialization.SnapshotSerializer" = 8
200 ###################################################
201 # Persistence plugins included with the extension #
202 ###################################################
204 # In-memory journal plugin.
205 akka.persistence.journal.inmem {
206 # Class name of the plugin.
207 class = "akka.persistence.journal.inmem.InmemJournal"
208 # Dispatcher for the plugin actor.
209 plugin-dispatcher = "akka.actor.default-dispatcher"
211 # Turn this on to test serialization of the events
212 test-serialization = off
215 # Local file system snapshot store plugin.
216 akka.persistence.snapshot-store.local {
217 # Class name of the plugin.
218 class = "akka.persistence.snapshot.local.LocalSnapshotStore"
219 # Dispatcher for the plugin actor.
220 plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
221 # Dispatcher for streaming snapshot IO.
222 stream-dispatcher = "akka.persistence.dispatchers.default-stream-dispatcher"
223 # Storage location of snapshot files.
225 # Number load attempts when recovering from the latest snapshot fails
226 # yet older snapshot files are available. Each recovery attempt will try
227 # to recover using an older than previously failed-on snapshot file
228 # (if any are present). If all attempts fail the recovery will fail and
229 # the persistent actor will be stopped.
230 max-load-attempts = 3
233 # LevelDB journal plugin.
234 # Note: this plugin requires explicit LevelDB dependency, see below.
235 akka.persistence.journal.leveldb {
236 # Class name of the plugin.
237 class = "akka.persistence.journal.leveldb.LeveldbJournal"
238 # Dispatcher for the plugin actor.
239 plugin-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
240 # Dispatcher for message replay.
241 replay-dispatcher = "akka.persistence.dispatchers.default-replay-dispatcher"
242 # Storage location of LevelDB files.
244 # Use fsync on write.
246 # Verify checksum on read.
248 # Native LevelDB (via JNI) or LevelDB Java port.
250 # Number of deleted messages per persistence id that will trigger journal compaction
251 compaction-intervals {
255 # Shared LevelDB journal plugin (for testing only).
256 # Note: this plugin requires explicit LevelDB dependency, see below.
257 akka.persistence.journal.leveldb-shared {
258 # Class name of the plugin.
259 class = "akka.persistence.journal.leveldb.SharedLeveldbJournal"
260 # Dispatcher for the plugin actor.
261 plugin-dispatcher = "akka.actor.default-dispatcher"
262 # Timeout for async journal operations.
265 # Dispatcher for shared store actor.
266 store-dispatcher = "akka.persistence.dispatchers.default-plugin-dispatcher"
267 # Dispatcher for message replay.
268 replay-dispatcher = "akka.persistence.dispatchers.default-replay-dispatcher"
269 # Storage location of LevelDB files.
271 # Use fsync on write.
273 # Verify checksum on read.
275 # Native LevelDB (via JNI) or LevelDB Java port.
277 # Number of deleted messages per persistence id that will trigger journal compaction
278 compaction-intervals {
283 akka.persistence.journal.proxy {
284 # Class name of the plugin.
285 class = "akka.persistence.journal.PersistencePluginProxy"
286 # Dispatcher for the plugin actor.
287 plugin-dispatcher = "akka.actor.default-dispatcher"
288 # Set this to on in the configuration of the ActorSystem
289 # that will host the target journal
290 start-target-journal = off
291 # The journal plugin config path to use for the target journal
292 target-journal-plugin = ""
293 # The address of the proxy to connect to from other nodes. Optional setting.
294 target-journal-address = ""
295 # Initialization timeout of target lookup
299 akka.persistence.snapshot-store.proxy {
300 # Class name of the plugin.
301 class = "akka.persistence.journal.PersistencePluginProxy"
302 # Dispatcher for the plugin actor.
303 plugin-dispatcher = "akka.actor.default-dispatcher"
304 # Set this to on in the configuration of the ActorSystem
305 # that will host the target snapshot-store
306 start-target-snapshot-store = off
307 # The journal plugin config path to use for the target snapshot-store
308 target-snapshot-store-plugin = ""
309 # The address of the proxy to connect to from other nodes. Optional setting.
310 target-snapshot-store-address = ""
311 # Initialization timeout of target lookup
315 # LevelDB persistence requires the following dependency declarations:
318 # "org.iq80.leveldb" % "leveldb" % "0.7"
319 # "org.fusesource.leveldbjni" % "leveldbjni-all" % "1.8"
323 # <groupId>org.iq80.leveldb</groupId>
324 # <artifactId>leveldb</artifactId>
325 # <version>0.7</version>
328 # <groupId>org.fusesource.leveldbjni</groupId>
329 # <artifactId>leveldbjni-all</artifactId>
330 # <version>1.8</version>