+per #15587 Make it possible to use multiple persistence plugins
This commit is contained in:
parent
a15ad56f45
commit
18dfd39686
14 changed files with 452 additions and 242 deletions
|
|
@ -0,0 +1,31 @@
|
|||
/**
|
||||
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
|
||||
*/
|
||||
|
||||
package docs.persistence;
|
||||
|
||||
import akka.persistence.UntypedPersistentActor;
|
||||
|
||||
public class PersistenceMultiDocTest {
|
||||
|
||||
//#default-plugins
|
||||
abstract class ActorWithDefaultPlugins extends UntypedPersistentActor {
|
||||
@Override
|
||||
public String persistenceId() { return "123"; }
|
||||
}
|
||||
//#default-plugins
|
||||
|
||||
//#override-plugins
|
||||
abstract class ActorWithOverridePlugins extends UntypedPersistentActor {
|
||||
@Override
|
||||
public String persistenceId() { return "123"; }
|
||||
// Absolute path to the journal plugin configuration entry in the `reference.conf`
|
||||
@Override
|
||||
public String journalPluginId() { return "akka.persistence.chronicle.journal"; }
|
||||
// Absolute path to the snapshot store plugin configuration entry in the `reference.conf`
|
||||
@Override
|
||||
public String snapshotPluginId() { return "akka.persistence.chronicle.snapshot-store"; }
|
||||
}
|
||||
//#override-plugins
|
||||
|
||||
}
|
||||
|
|
@ -614,3 +614,25 @@ or
|
|||
.. includecode:: ../scala/code/docs/persistence/PersistencePluginDocSpec.scala#shared-store-native-config
|
||||
|
||||
in your Akka configuration. The LevelDB Java port is for testing purposes only.
|
||||
|
||||
Multiple persistence plugin configurations
|
||||
==========================================
|
||||
|
||||
By default, persistent actor or view will use "default" journal and snapshot store plugins
|
||||
configured in the following sections of the ``reference.conf`` configuration resource:
|
||||
|
||||
.. includecode:: ../scala/code/docs/persistence/PersistenceMultiDocSpec.scala#default-config
|
||||
|
||||
Note that in this case actor or view overrides only ``persistenceId`` method:
|
||||
|
||||
.. includecode:: ../java/code/docs/persistence/PersistenceMultiDocTest.java#default-plugins
|
||||
|
||||
When persistent actor or view overrides ``journalPluginId`` and ``snapshotPluginId`` methods,
|
||||
the actor or view will be serviced by these specific persistence plugins instead of the defaults:
|
||||
|
||||
.. includecode:: ../java/code/docs/persistence/PersistenceMultiDocTest.java#override-plugins
|
||||
|
||||
Note that ``journalPluginId`` and ``snapshotPluginId`` must refer to properly configured ``reference.conf``
|
||||
plugin entires with standard ``class`` property as well as settings which are specific for those plugins, i.e.:
|
||||
|
||||
.. includecode:: ../scala/code/docs/persistence/PersistenceMultiDocSpec.scala#override-config
|
||||
|
|
|
|||
|
|
@ -667,3 +667,24 @@ Configuration
|
|||
There are several configuration properties for the persistence module, please refer
|
||||
to the :ref:`reference configuration <config-akka-persistence>`.
|
||||
|
||||
Multiple persistence plugin configurations
|
||||
==========================================
|
||||
|
||||
By default, persistent actor or view will use "default" journal and snapshot store plugins
|
||||
configured in the following sections of the ``reference.conf`` configuration resource:
|
||||
|
||||
.. includecode:: ../scala/code/docs/persistence/PersistenceMultiDocSpec.scala#default-config
|
||||
|
||||
Note that in this case actor or view overrides only ``persistenceId`` method:
|
||||
|
||||
.. includecode:: ../java/code/docs/persistence/PersistenceMultiDocTest.java#default-plugins
|
||||
|
||||
When persistent actor or view overrides ``journalPluginId`` and ``snapshotPluginId`` methods,
|
||||
the actor or view will be serviced by these specific persistence plugins instead of the defaults:
|
||||
|
||||
.. includecode:: ../java/code/docs/persistence/PersistenceMultiDocTest.java#override-plugins
|
||||
|
||||
Note that ``journalPluginId`` and ``snapshotPluginId`` must refer to properly configured ``reference.conf``
|
||||
plugin entires with standard ``class`` property as well as settings which are specific for those plugins, i.e.:
|
||||
|
||||
.. includecode:: ../scala/code/docs/persistence/PersistenceMultiDocSpec.scala#override-config
|
||||
|
|
|
|||
|
|
@ -178,8 +178,3 @@ persistent actor on the sending side.
|
|||
|
||||
Read more about at-least-once delivery in the :ref:`documentation for Scala <at-least-once-delivery>` and
|
||||
:ref:`documentation for Java <at-least-once-delivery-java>`.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
/**
|
||||
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
|
||||
*/
|
||||
|
||||
import akka.persistence.PersistentActor
|
||||
|
||||
object PersistenceMultiDocSpec {
|
||||
|
||||
val DefaultConfig = """
|
||||
//#default-config
|
||||
# Absolute path to the default journal plugin configuration entry.
|
||||
akka.persistence.journal.plugin = "akka.persistence.journal.inmem"
|
||||
# Absolute path to the default snapshot store plugin configuration entry.
|
||||
akka.persistence.snapshot-store.plugin = "akka.persistence.snapshot-store.local"
|
||||
//#default-config
|
||||
"""
|
||||
|
||||
//#default-plugins
|
||||
trait ActorWithDefaultPlugins extends PersistentActor {
|
||||
override def persistenceId = "123"
|
||||
}
|
||||
//#default-plugins
|
||||
|
||||
val OverrideConfig = """
|
||||
//#override-config
|
||||
# Configuration entry for the custom journal plugin, see `journalPluginId`.
|
||||
akka.persistence.chronicle.journal {
|
||||
# Standard persistence extension property: provider FQCN.
|
||||
class = "akka.persistence.chronicle.ChronicleSyncJournal"
|
||||
# Custom setting specific for the journal `ChronicleSyncJournal`.
|
||||
folder = ${user.dir}/store/journal
|
||||
# Standard persistence extension property: plugin actor uses config injection.
|
||||
inject-config = true
|
||||
}
|
||||
# Configuration entry for the custom snapshot store plugin, see `snapshotPluginId`.
|
||||
akka.persistence.chronicle.snapshot-store {
|
||||
# Standard persistence extension property: provider FQCN.
|
||||
class = "akka.persistence.chronicle.ChronicleSnapshotStore"
|
||||
# Custom setting specific for the snapshot store `ChronicleSnapshotStore`.
|
||||
folder = ${user.dir}/store/snapshot
|
||||
# Standard persistence extension property: plugin actor uses config injection.
|
||||
inject-config = true
|
||||
}
|
||||
//#override-config
|
||||
"""
|
||||
|
||||
//#override-plugins
|
||||
trait ActorWithOverridePlugins extends PersistentActor {
|
||||
override def persistenceId = "123"
|
||||
// Absolute path to the journal plugin configuration entry in the `reference.conf`.
|
||||
override def journalPluginId = "akka.persistence.chronicle.journal"
|
||||
// Absolute path to the snapshot store plugin configuration entry in the `reference.conf`.
|
||||
override def snapshotPluginId = "akka.persistence.chronicle.snapshot-store"
|
||||
}
|
||||
//#override-plugins
|
||||
|
||||
}
|
||||
|
|
@ -669,3 +669,24 @@ Configuration
|
|||
There are several configuration properties for the persistence module, please refer
|
||||
to the :ref:`reference configuration <config-akka-persistence>`.
|
||||
|
||||
Multiple persistence plugin configurations
|
||||
==========================================
|
||||
|
||||
By default, persistent actor or view will use "default" journal and snapshot store plugins
|
||||
configured in the following sections of the ``reference.conf`` configuration resource:
|
||||
|
||||
.. includecode:: code/docs/persistence/PersistenceMultiDocSpec.scala#default-config
|
||||
|
||||
Note that in this case actor or view overrides only ``persistenceId`` method:
|
||||
|
||||
.. includecode:: code/docs/persistence/PersistenceMultiDocSpec.scala#default-plugins
|
||||
|
||||
When persistent actor or view overrides ``journalPluginId`` and ``snapshotPluginId`` methods,
|
||||
the actor or view will be serviced by these specific persistence plugins instead of the defaults:
|
||||
|
||||
.. includecode:: code/docs/persistence/PersistenceMultiDocSpec.scala#override-plugins
|
||||
|
||||
Note that ``journalPluginId`` and ``snapshotPluginId`` must refer to properly configured ``reference.conf``
|
||||
plugin entires with standard ``class`` property as well as settings which are specific for those plugins, i.e.:
|
||||
|
||||
.. includecode:: code/docs/persistence/PersistenceMultiDocSpec.scala#override-config
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue