ava操作zookeeper也很简单,引入如下两个依赖:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.11</version>
</dependency>
zkclient提供了和zk命令差不多的api,new一个zookeeper实例,然后就可以通过这个实例进行增删改查了。部分代码如下:
package com.zhusl.utils.zookeeper;
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import java.util.List;
/**
* @author zhusl
* @date 2019/11/18 9:37
*/
public class HelloZk {
private static final String CONNECTURL = "192.168.2.43:2181";
private static final int SESSIONTIMEOUT = 30 * 1000;
/**
* 获取zk实例
*/
public static ZooKeeper getInstance() throws Exception{
ZooKeeper zooKeeper = new ZooKeeper(CONNECTURL, SESSIONTIMEOUT, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
}
});
return zooKeeper;
}
/**
* create /path data
*/
public static String createZnode(ZooKeeper zooKeeper, String path, String value) throws Exception{
String returnInfo = null;
if (zooKeeper.exists(path, false) == null){
returnInfo = zooKeeper.create(path, value.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
}
return returnInfo;
}
/**
* get /path
*/
public static String getZnode(ZooKeeper zooKeeper, String path) throws Exception{
String returnInfo = null;
byte[] bytes = zooKeeper.getData(path, false, new Stat());
returnInfo = new String(bytes);
return returnInfo;
}
/**
* set /pate newData
*/
public static String setZnode(ZooKeeper zooKeeper, String path, String value) throws Exception{
String returnInfo = null;
if (zooKeeper.exists(path, false) != null){
Stat stat = zooKeeper.setData(path, value.getBytes(), Version.REVISION);
returnInfo = stat.toString();
}
return returnInfo;
}
/**
* delete /path
*/
public static void deleteZnode(ZooKeeper zooKeeper, String path) throws Exception{
zooKeeper.delete(path, Version.REVISION);
}
/**
* ls /path
*/
public static String lsZnode(ZooKeeper zooKeeper, String path) throws Exception{
String returnInfo = null;
if (zooKeeper.exists(path, false) != null){
List<String> znodes = zooKeeper.getChildren(path, false);
returnInfo = znodes.toString();
}
return returnInfo;
}
}
上面是基础的Java对zookeeper进行增删改查的代码