zookeeper工具类:

获取连接实例;创建节点;获取子节点;设置节点数据;获取节点数据;访问控制等。

package org.windwant.zookeeper;

import org.apache.zookeeper.*;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.data.Stat;
import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;

import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.List;

/**
 * zookeeper util
 */
public class ZookeeperUtil {
    private static final int SESSION_TIMEOUT = 30000;

    /**
     * 使用连接串创建连接
     * @param domain
     * @param w
     * @return
     */
    public static ZooKeeper getInstance(String domain, Watcher w){
        try {
            return new ZooKeeper(domain,SESSION_TIMEOUT, w);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }


    public static String createNode(ZooKeeper zk, String path, byte[] data){
        try {
            return zk.create(path, data, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        } catch (KeeperException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static List<String> getChildrenNode(ZooKeeper zk, String path){
        try {
            return zk.getChildren(path, false);
        } catch (KeeperException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Stat setNodeData(ZooKeeper zk, String path, byte[] data, int version){
        try {
            return zk.setData(path, data, version);
        } catch (KeeperException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static byte[] getNodeData(ZooKeeper zk, String path){
        try {
            return zk.getData(path, false, null);
        } catch (KeeperException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void deleteNode(ZooKeeper zk, String path, int version){
        try {
            zk.delete(path, version);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (KeeperException e) {
            e.printStackTrace();
        }
    }

    public static void closeZk(ZooKeeper zk){
        try {
            if(zk != null) {
                zk.close();
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void addAuth(ZooKeeper zk, String userName, String passwd){
        try {
            zk.addAuthInfo(String.valueOf(Ids.AUTH_IDS), DigestAuthenticationProvider.generateDigest(userName + ":" + passwd).getBytes());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
//        try {
//            ZooKeeper zk = new ZooKeeper("localhost", 2181, null);
//            addAuth(zk, "roger", "123456");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
        try {
            System.out.println(DigestAuthenticationProvider.generateDigest("roger:123456"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}
View Code

相关文章:

  • 2021-10-02
  • 2021-09-06
  • 2021-08-30
  • 2021-10-31
  • 2022-12-23
  • 2021-10-03
  • 2021-08-07
  • 2021-08-31
猜你喜欢
  • 2021-06-26
  • 2021-06-22
  • 2022-12-23
  • 2022-12-23
  • 2021-11-05
  • 2021-06-02
  • 2022-12-23
相关资源
相似解决方案