我有简单的嵌入式ravenDB的asp.net mvc应用程序。
我的global.asax.cs:
DocumentStore = new EmbeddableDocumentStore
{
DataDirectory = "App_Data",
}.Initialize();
using (var session = DocumentStore.OpenSession())
{
session.Store(new ReplicationDocument
{
Destinations =
{
new ReplicationDestination
{
Url = "http://localhost:8080",
Database = "TestDB"
}
}
});
session.SaveChanges();
}
我已经在8080端口上运行了RavenDB服务,数据库是TestDB。已启用复制。
除复制外,应用程序工作正常。我的网站上的TestDB(http://localhost:8080
)上没有文档。
如何检查复制状态? 或者是否有任何文档如何设置复制?
我认为http://ravendb.net/docs/server/scaling-out/replication/from-embedded-server已经过时了。
提前致谢。
答案 0 :(得分:0)
以下是我在嵌入式RavenDB 2.5中启用它的大致内容:
var dataStore = new EmbeddableDocumentStore
{
DataDirectory = "mydatadir",
UseEmbeddedHttpServer = true,
};
dataStore.Configuration.Port = 4222;
dataStore.Configuration.Settings.Add("Raven/ActiveBundles", "Replication");
dataStore.initialize()
using (var session = dataStore.OpenSession())
{
var apiKey = new ApiKeyDefinition
{
Id = "Raven/ApiKeys/Replication",
Name = "Replication",
Secret = "MySecretAPIKey",
Enabled = true,
Databases = new List<DatabaseAccess>
{
new DatabaseAccess
{
TenantId = "<system>",
Admin = true,
ReadOnly = false
}
}
};
session.Store(apiKey);
var nodes = new string[] { };
var nodeSetting = "http://server1.example.com:4222, http://server2.example.com:4222";
if (!string.IsNullOrEmpty(nodeSetting))
{
nodes = nodeSetting.Split(',').Select(n => n.Trim()).ToArray();
}
var machineName = System.Web.HttpContext.Current.Server.MachineName;
var replication = new ReplicationDocument();
foreach (var node in nodes)
{
if (node.IndexOf("://" + machineName.ToLower() + ".", StringComparison.Ordinal) < 0)
{
replication.Destinations.Add(new ReplicationDestination
{
Url = node,
ApiKey = apiKey.FullApiKey
});
}
}
session.Store(replication);
session.SaveChanges();
}