2015-02-23 18 views
1

我正在为RavenDB(服务器和客户端3.0)设置一个复制和故障转移项目,现在我正在使用副本数据库进行测试。RavenDB故障转移方案。如何知道实际的服务器?

故障转移行为很简单:我有两个服务器,一个8080,一个在8081的配置基本上是这样的:

store.FailoverServers.ForDatabases = new Dictionary<string, ReplicationDestination[]> 
{ 
    { 
     "MyDB", 
     new[] 
      { 
       new ReplicationDestination 
        { 
         Url = "http://localhost:8080" 
        }, 
       new ReplicationDestination 
        { 
         Url = "http://localhost:8081" 
        } 
      } 
    } 
}; 

故障切换运作良好,我试图关闭(第一台服务器(即DocumentStore配置中使用的服务器)),第二台服务器按预期响应。

我想知道的是:有没有一种方法可以理解当前故障切换服务器对查询做出的响应?如果在会话中,我尝试导航DocumentSession属性(如session.Advanced.DocumentStore.Identifier),但找不到对第二个服务器的引用,但我只看到第一个引用,即用于配置的引用。

我错过了什么吗?

回答

1

您可以使用ReplicationInformer.FailoverStatusChanged获得故障转移通知。

可以使用访问复制举报人:DocumentStore.GetReplicationInformerForDatabase()

+0

感谢您的答复Ayende,我想这一点,但我可以从ReplicationInformer看到我没有什么是实际服务器的简单信息(s)在使用中,我只得到失败的服务器failureCounts。那是对的吗?同样在ReplicationDestinations上,我只能看到辅助服务器(即使它处于关闭状态)。 – tanathos 2015-02-23 16:46:10

+0

您将获得复制目标以了解辅助节点,并且主节点是存储上定义的任何节点。然后你可以使用'ShouldExecuteUsing'方法得到我们将要使用这个节点的任何东西。 – 2015-02-24 18:51:03

相关问题