java操作zookeeper_Java代码操作zookeeper

以下为一个完整JAVA操作Zookeeper项目步骤:

1. 项目中pom.xml中添加需要的依赖jar包信息

org.apache.zookeeper

zookeeper

3.4.9

com.101tec

zkclient

0.10

2. 在resource下添加log4j.properties日志打印信息

log4j.rootLogger=DEBUG,myConsole

log4j.appender.myConsole=org.apache.log4j.ConsoleAppender

log4j.appender.myConsole.ImmediateFlush=truelog4j.appender.myConsole.Target=System.out

log4j.appender.myConsole.layout=org.apache.log4j.PatternLayout

log4j.appender.myConsole.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

3. 使用Java代码操作Zookeeper

包括创建节点、设置节点值、获取节点值、判断节点是否存在

创建节点时,存在四种模式:(即在createZKNode方法中)

1. CreateMode.PERSISTENT :持久节点,一旦创建就保存到硬盘上面

2. CreateMode.SEQUENTIAL : 顺序持久节点

3. CreateMode.EPHEMERAL :临时节点,创建以后如果断开连接则该节点自动删除

4. CreateMode.EPHEMERAL_SEQUENTIAL :顺序临时节点

创建ZKOperaDemo.java类:

packagecom.hxc.zookeeperDemo;importjava.io.IOException;importjava.util.ArrayList;importorg.apache.zookeeper.CreateMode;importorg.apache.zookeeper.KeeperException;importorg.apache.zookeeper.WatchedEvent;importorg.apache.zookeeper.Watcher;importorg.apache.zookeeper.ZooKeeper;importorg.apache.zookeeper.data.ACL;importorg.apache.zookeeper.data.Stat;importorg.apache.zookeeper.ZooDefs.Ids;/***

*@authorsun_flower

**/

public classZKOperaDemo {private static String connectString = "192.168.202.132:2181";private static int sessionTimeout = 50 * 1000;/*** 连接Zookeeper服务器

*@return*@throwsIOException*/

public ZooKeeper connectionZooKeeper() throwsIOException {

ZooKeeper zooKeeper= new ZooKeeper(connectString, sessionTimeout, newWatcher() {public voidprocess(WatchedEvent event) {//可做其他操作(设置监听或观察者)

}

});returnzooKeeper;

}/*** 创建节点

* 1. CreateMode.PERSISTENT :持久节点,一旦创建就保存到硬盘上面

2. CreateMode.SEQUENTIAL : 顺序持久节点

3. CreateMode.EPHEMERAL :临时节点,创建以后如果断开连接则该节点自动删除

4. CreateMode.EPHEMERAL_SEQUENTIAL :顺序临时节点

*@paramzooKeeper Zookeeper已经建立连接的对象

*@parampath 要创建节点的路径

*@paramdata 该节点上的数据

*@return返回创建的节点的路径

*@throwsKeeperException

*@throwsInterruptedException*/

public String createZKNode(ZooKeeper zooKeeper, String path, String data) throwsKeeperException, InterruptedException {byte[] bytesData =data.getBytes();//访问控制列表

ArrayList openAclUnsafe =Ids.OPEN_ACL_UNSAFE;//创建模式

CreateMode mode =CreateMode.PERSISTENT;String result=zooKeeper.create(path, bytesData, openAclUnsafe, mode);

System.out.println("创建节点成功: " +result);returnresult;

}/*** 获取节点上的数据

*@paramzooKeeper Zookeeper已经建立连接的对象

*@parampath 节点路径

*@return返回节点上的数据

*@throwsKeeperException

*@throwsInterruptedException*/

public String getZKNodeData(ZooKeeper zooKeeper, String path) throwsKeeperException, InterruptedException {byte[] data = zooKeeper.getData(path, false, newStat());//System.out.println("该节点" + path + "上的数据伟: " + new String(data));

return newString(data);

}/*** 设置节点上的数据

*@paramzooKeeper Zookeeper已经建立连接的对象

*@parampath 节点路径

*@paramdata

*@return*@throwsKeeperException

*@throwsInterruptedException*/

public Stat setZKNodeData(ZooKeeper zooKeeper, String path, String data) throwsKeeperException, InterruptedException {return zooKeeper.setData(path, data.getBytes(), -1);

}/*** 判断节点是否存在

*@paramzooKeeper

*@parampath 节点路径

*@return*@throwsKeeperException

*@throwsInterruptedException*/

public Stat isExitZKPath(ZooKeeper zooKeeper, String path) throwsKeeperException, InterruptedException {

Stat stat= zooKeeper.exists(path, false);returnstat;

}

}

4. 测试代码TestZK.java

1)测试连接是否成功:

//1.测试连接是否成功

@Testpublic void testConnection() thr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值