Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用DataStax C#驱动程序时在Cassandra中处理所有节点_C#_Azure_Cassandra_Datastax Enterprise - Fatal编程技术网

使用DataStax C#驱动程序时在Cassandra中处理所有节点

使用DataStax C#驱动程序时在Cassandra中处理所有节点,c#,azure,cassandra,datastax-enterprise,C#,Azure,Cassandra,Datastax Enterprise,我在Azure中有一个简单的两节点集群设置,我正在使用DataStax C#驱动程序连接到它 我能够在没有任何问题的情况下关闭单个节点。只要我有一个节点运行,一切都很好。但是,如果我将两个节点都取下,然后将一个节点带回来,那么驱动程序将永远无法理解这一点。它一直说所有主机都已尝试,即使节点再次可用,也无法查询 我想这对于一个拥有20个节点的人来说是一种罕见的情况,但目前只有两个节点,预算有限,我必须为这种可能性做好计划。我在Azure中有一个一直在运行的worker角色,我需要一种重新连接(或刷

我在Azure中有一个简单的两节点集群设置,我正在使用DataStax C#驱动程序连接到它

我能够在没有任何问题的情况下关闭单个节点。只要我有一个节点运行,一切都很好。但是,如果我将两个节点都取下,然后将一个节点带回来,那么驱动程序将永远无法理解这一点。它一直说所有主机都已尝试,即使节点再次可用,也无法查询

我想这对于一个拥有20个节点的人来说是一种罕见的情况,但目前只有两个节点,预算有限,我必须为这种可能性做好计划。我在Azure中有一个一直在运行的worker角色,我需要一种重新连接(或刷新连接)的方法来让C#driver看到节点再次可用。我不想每次发生这样的事情都要重新启动我的服务

我看不出有什么好办法可以从异常中知道我需要重新连接,因为这可能是一个临时错误,我也看不到集群或会话对象上有任何明显的属性来知道我需要重置连接。

DataStax C#驱动程序公开了一个接口,并提供了一些内置实现来配置驱动程序的方式将在节点关闭时尝试重新连接

例如,配置
集群
尝试在500毫秒后重新连接到被视为停机的节点:

Cluster.Builder()
   .WithReconnectionPolicy(new ConstantReconnectionPolicy(500))
   .Build()

令人惊叹的!工作得很有魅力。如果执行一次性查询,最好在每次查询后调用Cluster.Shutdown()以释放连接?或者让连接保持打开状态可以吗?您应该在应用生命周期中调用
Cluster.Shutdown()
一次,最好是在不再发出查询之后。