我正在使用jetcd,这是一个非常好的用于etcd的Java客户端,并试图连接到etcd。当etcd正在运行时,它工作得很好。客户端已经建立,我可以执行put/get调用),但是即使etcd没有运行,我仍然会得到一个客户机。
我的问题是:如何检测(当我构建我的客户端时) etcd没有运行(然后我可以记录某件事情或等待/重新连接)?
下面是我使用的代码:
import io.etcd.jetcd.Client;
:
:
connections = {"http://etcd-1:2379", "http://etcd-2:2379", "http://etcd3:2379"}
Client client = Client.builder().endpoints(connections).build();
log.debug("client: {}", client);
问题是,我得到一个有效的客户端返回,但没有例外,即使没有一个etcd节点正在运行。不过,我会得到一个“null”返回,或者抛出一个异常。
有没有更好的解决办法,还是我做错了什么?
作为一种临时解决方案,我可能会尝试一个"put“或"get”调用,这可能会导致错误/异常/等待,但这似乎不是正确的方法。
如能提供任何协助,我们将不胜感激。
发布于 2022-11-26 15:59:16
Etcd (实际上是任何网络服务)本质上是不可靠的,所以您的程序必须能够在任何时候处理故障:而不仅仅是在启动时。您可以让您的程序“测试”连接,但您也可以不这样做,因为测试不能保证接下来会发生什么。
https://stackoverflow.com/questions/74583563
复制相似问题