Elasticsearch单节点场景下使用NEST实现网络错误重试的方案咨询
NEST 6.x 单节点连接池下网络错误官方重试配置方案
Elasticsearch 官方提供的 .NET 客户端 NEST 6.x 原生支持在 SingleNodeConnectionPool 场景下配置网络错误重试逻辑,无需自行封装完整重试机制。
默认场景下 SingleNodeConnectionPool 的最大重试次数为 0 因此不会触发重试,你可以通过以下配置手动开启重试:
- 初始化
ConnectionSettings时显式配置重试参数即可:
// 替换为你的负载均衡层ES访问地址 var esUri = new Uri("http://your-es-lb-host:9200"); var connectionPool = new SingleNodeConnectionPool(esUri); var settings = new ConnectionSettings(connectionPool) // 配置最大重试次数,可根据蓝绿部署最长中断时间调整,例如设置为3次 .MaximumRetries(3) // 开启超时场景重试,覆盖单节点池默认不重试规则 .EnableRetryOnTimeout() // 可选:配置所有重试总耗时上限,避免无限等待 .EnableRetryTimeout(TimeSpan.FromSeconds(15)) // 可选:配置重试退避策略,每次重试间隔2秒 .RetryTimeout(TimeSpan.FromSeconds(2)); var esClient = new ElasticClient(settings);
补充说明:你遇到的
System.Net.Sockets.SocketException类型的网络连接异常,属于 NEST 默认的重试触发异常范畴,无需额外配置异常过滤规则,完成上述配置后这类网络错误会自动触发重试,只有重试全部失败后才会向上抛出异常。
内容的提问来源于stack exchange,提问作者Nitramk
相关产品推荐
相关产品推荐

