Elasticsarch:使用单个节点执行重试

Nit*_*amk 7 elasticsearch nest retry-logic

我正在使用 NEST 对 Elasticsearch 6 集群执行查询。Elasticsearch 集群由几个节点组成,但它在防火墙/负载均衡器后面运行,因此从客户端角度来看,它显示为具有单个主机名的单个节点。

当部署我的应用程序的新版本时,由于基础设施/网络在蓝绿部署方面的工作方式,会出现短暂的网络中断。

由于我只有一个 Elasticsearch URI,因此当我创建连接时,NEST 将使用 SingleNodeConnectionPool 实例。我在文档 2 中读到,在这种情况下,NEST 将不会执行任何重试。

但就我而言,我想执行重试来处理上述网络中断,因为它当前会导致错误传播到最终用户。我知道我可以自己实现重试逻辑,但我想知道是否有某种方法可以获取网络连接错误的重试逻辑,即使在使用 SingleNodeConnectionPool 时也是如此。

我的代码中出现的错误是:

System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立的连接失败: