如何禁用RavenDB客户端复制检查?

时间:2013-11-30 18:36:04

标签: .net ravendb

我正在使用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:添加了示例代码

1 个答案:

答案 0 :(得分:-1)

此调用需要一段时间的通常原因是它是否需要加载数据库。 您可以使用FailoverBehavior = FailImmediately禁用检查,但请注意,这只是意味着下一个真正的调用将是加载数据库的那个。