up:: Watcher机制

说明: 两种方式连接到zk

建立与zk的连接

1.引入依赖

<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.6.0</version>
</dependency>

2.建立第一个连接的类

package com.imooc.zkjavaapi;
 
import com.imooc.zkjavaapi.watcher.ConnectWatcher;
import java.io.IOException;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.ZooKeeper.States;
 
/**
 * 描述:     连接到ZK
 */public class FirstConnect {
 
    public static void main(String[] args) throws IOException, InterruptedException {
        ConnectWatcher connectWatcher = new ConnectWatcher();
        ZooKeeper zk = new ZooKeeper(ZkConstant.ZK_HOST, ZkConstant.CONNECT_TIMEOUT, connectWatcher);
        System.out.println("客户端开始连接ZK服务器");
        States state = zk.getState();
        System.out.println(state);
        Thread.sleep(2000);
        state = zk.getState();
        System.out.println(state);
        Thread.sleep(2000);
        zk.close();
    }
}

说明:

watcher监听连接过程

package com.imooc.zkjavaapi.watcher;
 
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
 
/**
 * 描述:     连接Watcher
 */public class ConnectWatcher implements Watcher {
 
    @Override
    public void process(WatchedEvent event) {
        System.out.println("ConnectWatcher的process被调用了");
        if (event.getState()== KeeperState.SyncConnected) {
            System.out.println("连接成功");
        }
        if (event.getState()== KeeperState.Closed) {
            System.out.println("连接关闭");
        }
    }
}

说明;

配置初始化连接常量

package com.imooc.zkjavaapi;
 
/**
 * 描述:     ZK常量
 */
public class ZkConstant {
 
    public static final String ZK_HOST = "127.0.0.1:2181";
 
    public static final Integer CONNECT_TIMEOUT = 3000;
    public static final String PATH1 = "/imooc-my-first-node";
 
}

运行结果