1、首先通过idea创建maven工程,并添加依赖
<!-- zkclient -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.11</version>
</dependency>
2
节点的创建修改删除(连接时间尽可能写长点,否则连接不上,同时在监听器那块,必须先序列化)
package zookeeper.curd;
import org.I0Itec.zkclient.exception.ZkMarshallingError;
import org.I0Itec.zkclient.serialize.ZkSerializer;
import java.io.UnsupportedEncodingException;
public class CustomerSerializer implements ZkSerializer {
/** default utf 8 */
private String charset = "UTF-8";
public CustomerSerializer() {
// TODO Auto-generated constructor stub
}
public CustomerSerializer(String charset) {
this.charset = charset;
}
/**
* 序列化
*/
@Override
public byte[] serialize(Object data) throws ZkMarshallingError {
try {
byte[] bytes = String.valueOf(data).getBytes(charset);
return bytes;
} catch (UnsupportedEncodingException e) {
throw new ZkMarshallingError("Wrong Charset:" + charset);
}
}
/**
* 反序列化
*/
@Override
public Object deserialize(byte[] bytes) throws ZkMarshallingError {
String result = null;
try {
result = new String(bytes, charset);
} catch (UnsupportedEncodingException e) {
throw new ZkMarshallingError("Wrong Charset:" + charset);
}
return result;
}
}
package zookeeper.curd;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;
import org.apache.zookeeper.CreateMode;
import java.io.IOException;
public class TestCrud {
//集群地址,如果是单机 写一个
private static final String zkServer="47.100.100.223:2181,47.107.124.77:2181,114.116.246.18:2181";
private static ZkClient zkClient=null;
static {
zkClient=new ZkClient(zkServer,50000,50000,new CustomerSerializer("UTF-8"));
}
public static void main(String[] args) throws IOException {
// String s = zkClient.create("/java", "hello world", CreateMode.PERSISTENT);
// System.out.println(s);
//获取节点
// String s = zkClient.readData("/java");
// System.out.println(s);
//监听数据的变化
zkClient.subscribeDataChanges("/java", new IZkDataListener() {
@Override
public void handleDataChange(String dataPath, Object data) throws Exception {
System.out.println(dataPath+"--handleDataDelete--"+data);
}
@Override
public void handleDataDeleted(String dataPath) throws Exception {
System.out.println(dataPath+"--handleDataDelete--");
}
});
System.out.println("监听成功!!");
//不让程序结束
System.in.read();
}
}