0

我开始与 NEST 合作。我在上一个问题中看到,我应该在程序开始时只使用一次 TryConnect,然后使用 Connect。但这对于长时间运行的系统来说似乎有点太天真了。如果我有一个由 3 台机器组成的集群,并且我想确保我可以连接到这 3 台机器中的任何一台,该怎么办?推荐的方法应该是什么?

我应该: - 每次使用 TryConnect 并在失败时使用不同的主机 + 端口(缺点 - 每次额外的往返)?
- 尝试与客户端合作并有一些重试机制来处理由于连接问题导致的故障?也许在此之上实现一个连接池?

还有其他选择吗?有什么建议/建议吗?示例代码?

谢谢你的帮助,
罗恩

4

1 回答 1

1

连接池是一个经常被请求的功能,但由于涉及许多启发式方法和不同的方法,NEST 并没有开箱即用。您必须自己实施。

我不建议TryConnect()在每次通话之前打电话,因为现在您要打两个电话而不是一个。

每个 NEST 调用都会返回一个您可以检查的IResponseIsValidConnectionStatus它将保存请求和响应的详细信息。

另请参阅有关处理响应的文档

在 1.0 中,NEST 将开始在 TCP 级别错误的情况下抛出异常,因此可以实现更通用的连接池方法,并且 Nest 可能会附带一个单独的 nuget 包来实现一个(如果有任何参考)。另请参阅此讨论https://github.com/Mpdreamz/NEST/pull/224#issuecomment-16347889

希望这对现在有所帮助。

更新此答案已过时 NEST 1.0 附带开箱即用的连接池和集群故障转移支持:http: //nest.azurewebsites.net/elasticsearch-net/cluster-failover.html

于 2013-04-25T13:16:37.047 回答