1

Zookeeper インスタンスに接続するために CuratorFramework (私はまだ初心者です) を使用しています。構成をインポートしたいのですが、その前に自分のプログラムが 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 でも試しました)。問題は、zkServer が稼働しているにもかかわらず、上記のメソッドが常に false を返すことです。おそらく、構文が正しくありませんが、オンラインで解決策を見つけることができませんでした。上記のコードが稼働中の zkServer を見つけられない理由を教えてください。

4

3 に答える 3

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);
  }
});
}
于 2014-10-31T10:31:43.507 に答える