package com.ai.trial;
import java.io.IOException;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.ZooKeeperMain;
class ZkUtil {
private static final String zkUrl = "192.168.179.127:2181";
private static final int sessionTimeout = 30000;
private static ZooKeeper zk;
private static final Watcher watcher = new Watcher() {
@Override
public void process(WatchedEvent event) {
System.out.println(event.toString());
}
};
/**
* 描述: 初始化zk实例
* @author shengyu
* @date:2019年8月8日 下午5:57:10
*/
public void createZkInstance(){
try {
zk = new ZooKeeper(zkUrl, sessionTimeout, watcher);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 描述: 关闭zk
* @author shengyu
* @date:2019年8月8日 下午5:57:29
*/
public void zkClose(){
try {
zk.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 描述: 创建普通节点(持久化节点)
* @author shengyu
* @date:2019年8月8日 下午5:57:36
*/
public void createNode(){
try {
zk.create("/zoo", "mydata".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
} catch (KeeperException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* 描述: 获取指定节点数据
* @author shengyu
* @date:2019年8月8日 下午5:58:07
*/
public void getData(){
try {
System.out.println(new String(zk.getData("/zoo", false, null)));
} catch (KeeperException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* 描述: 修改节点值
* @author shengyu
* @date:2019年8月8日 下午5:58:24
*/
public void setData(){
try {
zk.setData("/zoo", "修改后的数据".getBytes(), -1);
} catch (KeeperException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* 描述: 删除节点
* @author shengyu
* @date:2019年8月8日 下午5:58:35
*/
public void deleteNode(){
try {
zk.delete("/zoo", -1);
} catch (KeeperException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* 描述:查看节点状态
* @author shengyu
* @date:2019年8月8日 下午5:58:46
*/
public void existNode(){
try {
System.out.println("节点状态:"+zk.exists("/zoo", false));
} catch (KeeperException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* 描述: 执行命令
* @author shengyu
* @param command
* @date:2019年8月8日 下午6:10:40
*/
public void executeCommandLine(String command){
ZooKeeperMain main = new ZooKeeperMain(zk);
try {
main.executeLine(command);
} catch (InterruptedException | IOException | KeeperException e) {
e.printStackTrace();
}
}
}
/**
* 描述: 测试类
* @author shengyu
* @date:2019年8月8日 下午6:00:01
*/
public class TestZk{
public static void main(String[] args) {
ZkUtil zkUtil = new ZkUtil();
zkUtil.createZkInstance();
//zkUtil.createNode();
//zkUtil.deleteNode();
//zkUtil.existNode();
zkUtil.executeCommandLine("ls /");
zkUtil.zkClose();
}
}