ZkClient 是git上一个开源的Zookeeper客户端,ZkClient 在 Zookeeper 原生API接口的基础上进行了包装,是一个更加易用的Zookeeper客户端。同时,ZkClient在内部实现了 Session 超时重连、Watchar 反复注册等功能。

引入jar包

    <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>   

 

ZkClient 的构造函数

zookeeper(六):开源客户端ZkClient

public ZkClient(String zkServers, int sessionTimeout, int connectionTimeout, 
ZkSerializer zkSerializer, long operationRetryTimeout){ this(new ZkConnection(zkServers, sessionTimeout), connectionTimeout, zkSerializer, operationRetryTimeout); }

 需要注意的是 ,ZkSerializer   是一个序列化器,对应 java 中的序列化器 是 SerializableSerializer

/*    */ public class SerializableSerializer
/*    */   implements ZkSerializer
/*    */ {
/*    */   public Object deserialize(byte[] bytes)
/*    */     throws ZkMarshallingError
/*    */   {
/*    */     try
/*    */     {
/* 31 */       ObjectInputStream inputStream = new TcclAwareObjectIputStream(new ByteArrayInputStream(bytes));
/* 32 */       return inputStream.readObject();
/*    */     }
/*    */     catch (ClassNotFoundException e) {
/* 35 */       throw new ZkMarshallingError("Unable to find object class.", e);
/*    */     } catch (IOException e) {
/* 37 */       throw new ZkMarshallingError(e);
/*    */     }
/*    */   }
/*    */   
/*    */   public byte[] serialize(Object serializable) throws ZkMarshallingError
/*    */   {
/*    */     try {
/* 44 */       ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
/* 45 */       ObjectOutputStream stream = new ObjectOutputStream(byteArrayOS);
/* 46 */       stream.writeObject(serializable);
/* 47 */       stream.close();
/* 48 */       return byteArrayOS.toByteArray();
/*    */     } catch (IOException e) {
/* 50 */       throw new ZkMarshallingError(e);
/*    */     }
/*    */   }
/*    */ }
View Code

相关文章: