Zookeeper学习笔记八之Java操作API
Java操作Zookeeper客户端API Java操作Zookeeper的API围绕Zookeeper的句柄(handle)而构建,每个API调用都需要传递这个句柄,这个句柄代表与Zookeeper之间的一个会话。 创建Zookeeper句柄的构造函数如下 ZooKeeper zooKeeper=new ZooKeeper(String connectString,i...
Java操作Zookeeper客户端API
Java操作Zookeeper的API围绕Zookeeper的句柄(handle)而构建,每个API调用都需要传递这个句柄,这个句柄代表与Zookeeper之间的一个会话。
创建Zookeeper句柄的构造函数如下
ZooKeeper zooKeeper=new ZooKeeper(String connectString,int sessionTimeout,Watcher watcher);
connectString:包含主机名和服务器的端口,如127.0.0.1:2181
sessionTimeout:以毫秒为单位,表示ZooKeeper等待客户端通信的最大时间,超时声明会话死亡,一般设置超时时间为5~10秒
watcher:用于接受会话事件的一个对象,Watcher定义为接口,需要我们自己实现一个类,然后传入ZooKeeper构造函数中。客户端使用Watcher接口来监控与Zookeeper之间会话的健康情况。与ZooKeeper服务器之间建立或失去连接时就会产生事件。同样可以应用于监控ZooKeeper数据的变化。最终,如果与ZooKeeper的会话过期,也会通过Watcher接口传递事件来通知客户端的应用。
实现Java连接ZooKeeper服务端,实现一个Watcher
package com.my.service;
import java.io.IOException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
public class MyZookeeper {
private ZooKeeper zooKeeper;
private String hostPort;
public MyZookeeper(String hostPort) {
this.hostPort=hostPort;
}
//创建一个zk连接监视点,打印断开连接日志信息
Watcher watcher = new Watcher() {
public void process(WatchedEvent event) {
//如果监控到与服务端连接断开,打印日志
if (KeeperState.Disconnected.equals(event.getState())) {
System.out.println("Zookeeper Disconnected!客户端与ZooKeeper服务器连接断开!");
}
}
};
//连接到zk服务端
public void startZk() throws IOException {
zooKeeper = new ZooKeeper(hostPort, 15000, watcher);
}
public static void main(String[] args) throws IOException, InterruptedException {
MyZookeeper myZookeeper=new MyZookeeper("127.0.0.1:2181");
myZookeeper.startZk();
//线程休眠30秒,断开服务端查看Watch监视效果
Thread.sleep(30000);
}
}
启动ZooKeeper服务端,运行程序,然后将ZooKeeper服务器关闭,查看监视点是否监视到连接断开。如下图,断开服务器后,监视点监视到了与服务端连接断开
更多推荐
所有评论(0)