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";
}