2014-10-31 2 views
0

Я использую CuratorFramework (я все еще новичок), чтобы подключиться к экземпляру Zookeeper. Я хотел бы импортировать конфигурацию, но до этого я хотел бы проверить, что моя программа может подключиться к Zookeeper. До сих пор у меня есть что-то вроде этого:Как проверить программно, если Zookeeper запущен?

public Boolean zookeeperRunning() { 
    CuratorFramework curatorFramework = 
      CuratorFrameworkFactory.newClient(zookeeperConn, new RetryOneTime(1)); 
    curatorFramework.start(); 

    CuratorZookeeperClient zkClient = curatorFramework.getZookeeperClient(); 
    return zkClient.isConnected(); 
} 

Я уже начал Zookeeper на моей локальной машине, и я проверил связь с zkCli и клиент может подключиться к нему. Переменная zookeeperCon установлена ​​в «127.0.0.1:2181» (я также пробовал с localhost: 2181). Проблема в том, что указанный выше метод всегда возвращает false, несмотря на то, что zkServer работает n. Скорее всего, синтаксис неверен, но я не смог найти решение в Интернете. Не могли бы вы помочь мне, почему приведенный выше код не может найти zkServer, который работает и работает?

ответ

2

Вы можете использовать конструктор, чтобы создать настроенный клиент и настройку слушатель контролировать состояние вашего ZK экземпляра:

// start client 
client = CuratorFrameworkFactory.builder() 
    .connectString("localhost:2181") 
    .retryPolicy(new ExponentialBackoffRetry(1000, 3)) 
    .namespace("heavenize") 
    .build(); 

client.getConnectionStateListenable().addListener(new ConnectionStateListener() {  
    @Override 
    public void stateChanged(CuratorFramework client, ConnectionState newState) 
    { 
    log.info("State changed to: "+newState); 
    } 
}); 
} 
+0

Извините, если мой вопрос глупый, но как выше метод возвращает логическую переменный? Я хотел бы, чтобы мой метод имел следующую подпись: "public Boolean zookeeperRunning() {}" –

+0

Вы можете установить глобальный логический флаг каждый раз, когда stateChanged вызывается и возвращается из getZKState(). – bachr

Смежные вопросы