Replication: Using Embedded instance
Replication works using plain HTTP requests to replicate all changes from one server instance to another. When running in embedded mode, you can't replicate to that instance (since it has no HTTP endpoints), unless you use Embedded+HTTP mode but you can replicate from that instance.
Replicating from embedded instance
To replicate from embedded instance to another HTTP-enabled server instance you need to:
- enable
Replication
bundle on a database e.g. you can create new database with the following code:
store
.DatabaseCommands
.GlobalAdmin
.CreateDatabase(
new DatabaseDocument
{
Id = "Northwind",
// other configuration options omitted for simplicity
Settings =
{
{ Constants.ActiveBundles, "Replication" }
}
});
- setup a replication by creating the
ReplicationDestinations
document with appropriate settings.
using (IDocumentSession session = store.OpenSession("Northwind"))
{
session.Store(new ReplicationDocument
{
Destinations =
{
new ReplicationDestination
{
Url = "http://destination-server-url:8080/",
Database = "destination_database_name"
},
}
});
}
Replicating to embedded instance
Replication requires HTTP endpoints on destination server to be running, yet, by default, when an embedded instance is used, internal HTTP-server is disabled. To turn it on initialize EmbeddableDocumentStore
with UseEmbeddedHttpServer
set to true
(you can read more here).
EmbeddableDocumentStore store = new EmbeddableDocumentStore
{
UseEmbeddedHttpServer = true
};
Now you can replicate to an embedded instance, not just from it.