- 一.问题描述:
- (1)代码如图所示:
- (2)使用IDEA连接zookeeper客户端,报KeeperException$ConnectionLossException异常
- 二·报错原因:
- (1)创建zookeeper对象时,设置的连接会话超时太短
- (2)zookeeper里面已经存在你将要创建的节点名称
- 三·解决办法:
- (1)对创建zookeeper对象时,设置的“sessionTimeOut=2000”进行延长,本人要“sessionTimeOut=200000”,才能执行成功,读者可以根据自己实际情况而定。
- (2)将zookeeper中那个同名节点删除掉,再去执行连接zookeeper的方法
- (3)若不想删除同名节点,则需要在create方法参数中,使用节点类型为“顺序节点”类型
- 四·测试结果:成功
public class zkClient { //注意:逗号前后不能有空格 //连接的 “主机IP+端口号”,多台服务器之间使用逗号隔开 private String connectString = "192.168.120.128:2181,192.168.120.130:2181,192.168.120.131:2181"; //设置超时时长 private int sessionTimeout = 2000; private ZooKeeper zooKeeper; @Before // @Test public void init() throws IOException { zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() { @Override public void process(WatchedEvent watchedEvent) { } }); } @Test public void create() throws InterruptedException, KeeperException, IOException { // this.init(); String node = zooKeeper.create("/lmf", "张三".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } }(2)使用IDEA连接zookeeper客户端,报KeeperException$ConnectionLossException异常 二·报错原因:
注意:以下原因只是本人出现的问题,也许还有其他情况!
(1)创建zookeeper对象时,设置的连接会话超时太短 (2)zookeeper里面已经存在你将要创建的节点名称 三·解决办法: (1)对创建zookeeper对象时,设置的“sessionTimeOut=2000”进行延长,本人要“sessionTimeOut=200000”,才能执行成功,读者可以根据自己实际情况而定。//设置超时时长 private int sessionTimeout = 200000;(2)将zookeeper中那个同名节点删除掉,再去执行连接zookeeper的方法 (3)若不想删除同名节点,则需要在create方法参数中,使用节点类型为“顺序节点”类型
String node = zooKeeper.create("/lmf", "张三".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);四·测试结果:成功
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)