import org.apache.zookeeper.*;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Id;
import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
import java.io.IOException;
/*
1.客户端连接到某个Zookeeper服务器有一个过程
Connecting
Connected
使用这个代码创建Zookeeper实例, 同时也是一个连接过程
zooKeeper = new ZooKeeper(Address, timeout, Watcher);
这个过程会被一个Watcher监听, 在process方法回调结果, 所以应该在process方法中判断状态
2.使用如下代码创建一个节点
String path = zooKeeper.create(NodeName, BytesOfNodeData, AuthorityOfNode, CreateMode.TypeOfNode);
3.创建节点的权限模式
IP
digest
ACL ACLIP = new ACL(ZooDefs.Perms.READ, new Id("ip", "192.168.32.132"));
ACL ACLDigest = new ACL(ZooDefs.Perms.WRITE, new Id("digest", DigestAuthenticationProvider.generateDigest("walter:123456")));
*/
public class CreateSession implements Watcher{
private static ZooKeeper zooKeeper;
private static final String IP = "192.168.32.132:2181";
public static void main(String[] args) throws IOException, InterruptedException {
int timeout = 5000;
zooKeeper = new ZooKeeper(IP, timeout, new CreateSession());
Thread.sleep(Integer.MAX_VALUE);
}
public void process(WatchedEvent event) {
if(event.getState()== Event.KeeperState.SyncConnected){
System.out.println("连接到" + IP);
createNode();
}
}
public void createNode() {
try {
ACL ACLIP = new ACL(ZooDefs.Perms.READ, new Id("ip", "192.168.32.132"));
ACL ACLDigest = new ACL(ZooDefs.Perms.WRITE, new Id("digest", DigestAuthenticationProvider.generateDigest("walter:123456")));
String path = zooKeeper.create("/node_4", "hello".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
System.out.println("创建节点: " + path);
} catch (Exception e){
e.printStackTrace();
}
}
}
Zookeeper Java客户端使用
最新推荐文章于 2020-07-17 08:57:13 发布