我在Azure中有一个简单的双节点群集设置,我正在使用DataStax C#驱动程序连接到它。
我可以在没有任何问题的情况下关闭单个节点。只要我有一个节点运行一切都很好。但是,如果我将两个节点都关闭然后再启动一个节点,则驱动程序永远不会抓住这个节点。它一直说所有主机都被尝试过,即使节点再次可用也无法查询。
我想这对于拥有20个节点的人来说是一种罕见的情况,但目前只有两个节点和有限的预算,我必须计划这种可能性。我在Azure中有一个始终正在运行的辅助角色,我需要一种方法来重新连接(或刷新连接)以使C#驱动程序再次看到节点可用。每次这样的事情发生时我都不想重启我的服务。
我没有看到任何很好的方式从异常中知道我需要重新连接,因为它可能是一个临时错误,我没有在Cluster或Session对象上看到任何明显的属性知道我需要重置连接
答案 0 :(得分:2)
DataStax C#驱动程序公开ReconnectionPolicy接口并提供一些内置实现,以配置驱动程序在节点出现故障时尝试重新连接的方式。
例如,配置Cluster
尝试重新连接到500毫秒后认为已关闭的节点:
Cluster.Builder()
.WithReconnectionPolicy(new ConstantReconnectionPolicy(500))
.Build()