0

我正在检查 CuratorFramework 实例的连接,当我在调试模式下它通过正常,但是当我在运行模式下它通过验证考虑条件为假。

    curatorFramework.getZookeeperClient().isConnected();

代码有问题吗?这就是我创建实例的方式:

    RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 1);
    CuratorFramework curatorFramework= CuratorFrameworkFactory.newClient(host, retryPolicy);
    curatorFramework.start();
4

2 回答 2

1

我无法发现您的代码有任何明显错误,但是,我建议尝试使用CuratorFrameworkFactory来构建您的 CuratorFramework 实例,如下所示:

String connectionString = ....

CuratorFramework client = CuratorFrameworkFactory.builder()
        .namespace("my_namespace")
        .connectString(connectionString )
        .retryPolicy(new ExponentialBackoffRetry(1000, 1))
        .build();

client.start();

我还建议使用 Curator 的内置TestingServer测试您的代码,以确保问题不在于您当前正在测试的 ZK 集群。要设置并连接到 Curator 测试服务器,只需使用以下内容:

TestingServer zkTestServer = new TestingServer(31313);

CuratorFramework client = CuratorFrameworkFactory.builder()
        .namespace("my_namespace")
        .connectString(zkTestServer.getConnectString())
        .retryPolicy(new ExponentialBackoffRetry(1000, 1))
        .build();

client.start();
于 2015-05-20T17:00:19.163 回答
0

启动 curatorFramework 后,您应该连接到 zk curatorFramework.blockUntilConnected(),然后获取客户端并检查连接状态。喜欢下面的东西:

    ...
    curatorFramework.start();

    try {
        curatorFramework.blockUntilConnected(3, TimeUnit.SECONDS);
        if (curatorFramework.getZookeeperClient().isConnected()) {
            System.out.println(curatorFramework.getState());
            return;
        }
    } catch (InterruptedException ignored) {
        Thread.currentThread().interrupt();
    }
    ...
于 2019-02-18T03:30:24.747 回答