我正在使用RavenDB .Net客户端2.5.2700和服务器版本2700。
呼叫DocumentStore.Initialize()
需要21秒,即使服务器处于暖机状态也会更改。
与Fiddler一起观看Raven/Databases/<database>
的呼叫几乎立即返回,但是客户端等待databases/<database>/docs/Raven/Replication/Destinations
的呼叫返回404,这需要相当长的时间。我没有在服务器上安装/启用复制包,我很好,客户端知道这个事实。
有没有办法在.Net RavenDB客户端上配置DocumentStore
,以便跳过复制检查?
这是我最简单的连接示例,这是我本地网络上默认安装的raven服务器。
private static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
using (var documentStore = new DocumentStore() { Url = @"http://hal9013s:8080/", DefaultDatabase = "Qonqr" })
{
//This takes away the replication check call but there's still a consistent 21 second pause
documentStore.Conventions.FailoverBehavior = FailoverBehavior.FailImmediately;
sw.Start();
documentStore.Initialize();
sw.Stop();
Console.WriteLine("At {0} it took {1} total seconds to initialize", DateTime.UtcNow, sw.Elapsed.TotalSeconds);
}
Console.WriteLine("Press Any Key To Exit");
Console.ReadKey(true);
}
两次连续运行会产生以下结果:
At 12/1/2013 8:55:15 AM it took 21.2308527 total seconds to initialize
At 12/1/2013 8:55:55 AM it took 21.2484128 total seconds to initialize
编辑:根据Matt Johnson的评论建议将客户端从版本2750更改为2700。 编辑2:添加了示例代码
答案 0 :(得分:-1)
此调用需要一段时间的通常原因是它是否需要加载数据库。 您可以使用FailoverBehavior = FailImmediately禁用检查,但请注意,这只是意味着下一个真正的调用将是加载数据库的那个。