我在开发中使用 ZooKeeper 已有一段时间了,但我似乎没有得到的一件事是没有办法(至少我无法弄清楚)如何在创建连接时指定超时ZooKeeper 服务器例如:
ZooKeeper zoo;
final CountDownLatch connectedSignal = new CountDownLatch(1);
zoo = new ZooKeeper("localhost:2182", 5000, new Watcher() {
public void process(WatchedEvent we) {
if (we.getState() == KeeperState.SyncConnected) {
connectedSignal.countDown();
}
if (we.getState() == KeeperState.Disconnected) {
connectedSignal.countDown();
}
if (we.getType() == Event.EventType.None) {
connectedSignal.countDown();
}
}
});
System.out.println("in watcher");
connectedSignal.await();
请注意,如果 ZooKeeper 服务器关闭,似乎不会发生超时,因此不会引发异常,并且我的代码始终等待倒计时锁存器。我也尝试在 zoo.cfg 中设置此属性,但它没有任何效果:
zookeeper.connection.timeout.ms=5000
需要帮助了解 Java API 中是否为 ZooKeeper 提供了某种方法来检查是否无法成功地创建到 ZooKeeper 服务器的连接?注意,我知道我们可以通过 executorservice 和 futures 来做到这一点,但我需要 API 中提供的方法吗?
拉丁的传说
相关分类