开源客户端ZkClient的使用

一 简介
Zkclient是Github上一个开源的Zookeeper客户端。Zkclient在Zookeeper原生 API接口之上进行了包装,是一个更加易用的Zookeeper客户端。同时Zkclient在内部实现了诸如Session超时重连,Watcher反复注册等功能。

二 搭建开发环境
1 eclipse中创建maven项目zookerper
2 编辑pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">;
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cakin</groupId>
  <artifactId>zookerper</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>zookerper</name>
  <url>http://maven.apache.org</url>;
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
        <groupId>com.101tec</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.5</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
三 编辑代码
1 创建自定义序列化类 MyZkSerializer
package com.cakin.zookerper;
import java.io.UnsupportedEncodingException;
import org.I0Itec.zkclient.exception.ZkMarshallingError;
import org.I0Itec.zkclient.serialize.ZkSerializer;
public class MyZkSerializer implements ZkSerializer{
    public byte[] serialize(Object data) throws ZkMarshallingError {
        try {
            return String.valueOf(data).getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }
    public Object deserialize(byte[] bytes) throws ZkMarshallingError {
        try {
            return new String(bytes, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }
}
2 新建CreateSession类
package com.cakin.zookerper;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.serialize.SerializableSerializer;
public class CreateSession {
    public static void main(String[] args) {
        ZkClient zc = new ZkClient("192.168.0.110:2181",10000,10000,new SerializableSerializer());
        System.out.println("conneted ok!");
    }
}
运行结果
conneted ok!

3 新建CreateNode类
package com.cakin.zookerper;
import org.I0Itec.zkclient.ZkClient;
import org.apache.zookeeper.CreateMode;
public class CreateNode {
     public static void main(String[] args) {
           ZkClient zc = new ZkClient("192.168.0.110:2181",10000,10000);
           zc.setZkSerializer(new MyZkSerializer());
           System.out.println("conneted ok!");
           String path = zc.create("/test5", "test", CreateMode.PERSISTENT);
           System.out.println("Create path" + path);
     }
}
运行结果
conneted ok!
Create path/test5

4 新建GetData类
package com.cakin.zookerper;
import org.I0Itec.zkclient.ZkClient;
import org.apache.zookeeper.data.Stat;
public class GetData {
     public static void main(String[] args) {
           ZkClient zc = new ZkClient("192.168.0.110:2181",10000,10000);
           zc.setZkSerializer(new MyZkSerializer());
           System.out.println("conneted ok!");
           
           Stat stat = new Stat();
           String test = zc.readData("/test5",stat);
           
           System.out.println("id="+test);
           System.out.println(stat);
     }
}
运行结果
conneted ok!
id=test
38654705708,38654705708,1515232000388,1515232000388,0,0,0,0,4,0,38654705708

5 新建GetChild类
package com.cakin.zookerper;
import java.util.List;
import org.I0Itec.zkclient.ZkClient;
public class GetChild {
     public static void main(String[] args) {
           ZkClient zc = new ZkClient("192.168.0.110:2181",10000,10000);
           zc.setZkSerializer(new MyZkSerializer());
           System.out.println("conneted ok!");
           
           List<String> cList = zc.getChildren("/test5");
           System.out.println(cList.toString());
     }
}
运行结果:
conneted ok!
[]

6 新建NodeExists类
package com.cakin.zookerper;
import org.I0Itec.zkclient.ZkClient;
public class NodeExists {
     public static void main(String[] args) {
           ZkClient zc = new ZkClient("192.168.0.110:2181",10000,10000);
           zc.setZkSerializer(new MyZkSerializer());
           System.out.println("conneted ok!");
           
           boolean e = zc.exists("/test5");
           System.out.println(e);
     }
}

运行结果

conneted ok!
true

7 新建NodeDel类
package com.cakin.zookerper;
import org.I0Itec.zkclient.ZkClient;
public class NodeDel {
     public static void main(String[] args) {
           ZkClient zc = new ZkClient("192.168.0.110:2181",10000,10000);
           zc.setZkSerializer(new MyZkSerializer());
           System.out.println("conneted ok!");
           
           boolean e1 = zc.delete("/test5");
           boolean e2 = zc.deleteRecursive("/test5");
           
           System.out.println(e1);
           System.out.println(e2);
           
     }
}

运行结果

conneted ok!
true
true

四 参考

http://www.jikexueyuan.com/course/2063_1.html?ss=1
https://www.cnblogs.com/xbq8080/p/6622606.html




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
国标GB28181是中国监控领域的标准之一,该标准旨在解决公共安全视频监控系统中的数据安全、通信安全和接口标准化等问题。而安卓开源客户端则是针对GB28181标准开发的一款客户端应用,旨在为广大用户提供一种更加方便、便捷的视频监控访问和管理方式。 该开源客户端具有多种功能和特点。首先,该客户端采用了一套独特的底层实现方式,可以实现对多种视频流的支持,同时还具有缓存优化机制,使视频播放更加流畅。其次,该客户端支持多种设备连接方式,包括P2P连接、IP直连、IP组播等,满足不同用户的需求。此外,该客户端还具有多种播放控制功能,比如倍速播放、捕捉截图、录制视频等,用户可以自由地对可用视频进行编辑和管理。 除此之外,国标GB28181安卓开源客户端还具有高度的可定制性。用户可以根据自身需求进行定制,比如自定义界面、自定义功能等,同时还可以自由进行二次开发。另外,该客户端的代码开源,可以让更多的开发者参与到客户端的开发与完善中来,从而让更多的人受益于该客户端。 总之,国标GB28181安卓开源客户端是一款对广大监控用户极为实用的应用软件。其具有多种功能和特点,让用户更方便地进行视频监控访问和管理。同时,该软件还具有高度的开放性和可定制性,可以让用户根据自身需求进行定制和二次开发。因此,该软件在未来还将会得到更多用户的支持和推崇。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值