对于学习java的小伙伴们来说,zookeeper一定是不陌生的,你们知道要如何在java中与zookeeper交互小结吗?这次小编就通过一个示例来带大家了解一下吧。import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
/**
* @author likexin
* @date 2019/07/01
*/
public class ZKHelper implements Watcher
{
public static ZooKeeper zk = null;
private CountDownLatch countDownLatch = new CountDownLatch(1);
public void process(WatchedEvent watchedEvent)
{
if (watchedEvent.getState() == Event.KeeperState.SyncConnected)
{
countDownLatch.countDown();
}
}
/**
* 创建连接
* @param host
*/
public void connectZookeeper(String host)
{
try
{
zk = new ZooKeeper(host, 2000, this);
countDownLatch.await();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
/**
* 注册节点
* @param path 节点的路径
*/
public void regist(String path)
{
try
{
zk.create(path, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
}
catch (KeeperException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
/**
* 修改节点的内容
* @param path 节点路径
* @param data
*/
public void updateNodeData(String path, String data)
{
try
{
zk.setData(path, data.getBytes(), -1);
}
catch (KeeperException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
/**
* 获取数据
* @param path 节点路径
* @return
*/
public String getData(String path)
{
Stat stat = new Stat();
String data = null;
try
{
data = new String(zk.getData(path, true, stat));
}
catch (KeeperException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return data;
}
/**
* 关闭连接
*/
public void close()
{
try
{
zk.close();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
ZKHelper zkHelper = new ZKHelper();
zkHelper.connectZookeeper("172.0.0.1");
zkHelper.regist("/PATH/DATA");
zkHelper.updateNodeData("/PATH/DATA", "Love");
String data = zkHelper.getData("/PATH/DATA");
System.out.println(data);
zkHelper.close();
}
}
以上就是本篇文章的所有内容,你应该知道java与zookeeper小结的方式了吧。还有疑问并且想了解更多java面试常见问题的小伙伴,就请关注我们的网站了解具体吧。
推荐阅读: