一:客户端链接测试

 package com.yeepay.sxf.createConnection;

 import java.io.IOException;

 import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.ZooKeeper.States; /**
* 测试Zookeeper的链接
* @author sxf
*
*/
public class TestCreateSession { //zooKeeper实例
private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException { //实例化zooKeeper的实例
//参数:(ip地址:端口号 ,当前会话超时时间,自定义事件监听器)
zooKeeper=new ZooKeeper("10.151.30.75:2181",5000, new MyWatcher()); //获取链接状态
States states=zooKeeper.getState(); //此链接为异步链接
System.out.println("TestCreateSession.main(链接状态):"+states.toString());//CONNECTING Thread.sleep(Integer.MAX_VALUE);
}
} package com.yeepay.sxf.createConnection; import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
/**
* zookeeper实例过程中的事件监听器
* @author sxf
*
*/
public class MyWatcher implements Watcher{ //该方法可以做相关的逻辑代码
@Override
public void process(WatchedEvent event) {
//MyWatcher.process(接收到的事件:)WatchedEvent state:SyncConnected type:None path:null
System.out.println("MyWatcher.process(接收到的事件:)"+event); //如果链接成功可以做一些事情
if(event.getState()==KeeperState.SyncConnected){
System.out.println("MyWatcher.process(链接成功做一些事情:)");
} } }

二:客户端创建节点测试

 package com.yeepay.sxf.createNode;

 import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List; import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooDefs.Perms;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Id;
import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
/**
* zooKeeper同步创建节点测试
* @author sxf
*
*/
public class TestCreateNodeSyn implements Watcher { private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException, NoSuchAlgorithmException {
// //实例化zooKeeper链接
// zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestCreateNodeSyn());
// //创建链接
// Thread.sleep(Integer.MAX_VALUE); System.out.println(DigestAuthenticationProvider.generateDigest("shangxiaofei:shangxiaofei"));
} /**
*权限模式(scheme): ip,digest
*授权对象(ID):
* ip权限模式:具体的ip地址
* digest权限模式:username:Base64(SHA-1(username:password))
*
*权限(permission):CREATE(C),DELETE(D),READ(R),WRITE(W),ADMIN(A)
* 注:单个权限,完全权限,复合权限
*
*权限组合:scheme+ID+permission
*/ public void process(WatchedEvent event) {
//链接成功
if(event.getState()==KeeperState.SyncConnected){
//同步创建节点
try {
//基于ip的权限,意味着这个ip的客户端对此节点有读取权限
ACL ipacl=new ACL(Perms.READ, new Id("ip", "10.151.30.75"));
//基于digest的权限,意味着只有这个用户名和密码的客户端才能读取和写的权限
ACL digetacl=new ACL(Perms.READ|Perms.WRITE,new Id("digest",DigestAuthenticationProvider.generateDigest("shangxiaofei:shangxiaofei"))); List<ACL> myaclAcls=new ArrayList<ACL>();
myaclAcls.add(ipacl);
myaclAcls.add(digetacl); String path=zooKeeper.create("/node_128", "shangxiaofei".getBytes(), myaclAcls, CreateMode.PERSISTENT);
System.out.println("MyWatcher2.process(创建节点返回的路径:)"+path);
}catch (NoSuchAlgorithmException e){
e.printStackTrace();
} catch (KeeperException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } } package com.yeepay.sxf.createNode; import java.io.IOException; import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
/**
* zooKeeper异步创建节点测试
* @author sxf
*
*/
public class TestCreateNodeAsyn implements Watcher { private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestCreateNodeAsyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} @Override
public void process(WatchedEvent event) {
//链接成功
if(event.getState()==KeeperState.SyncConnected){
//异步创建节点
zooKeeper.create("/node_124", "shangxiaoshuai".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT,new ISstringCallBack(),"sxf创建");
} } //该类数据异步回调接口实现
static class ISstringCallBack implements AsyncCallback.StringCallback{ //创建成功rc=0
//path,创建节点的路径
//ctx,创建节点的传入的上下位
//name,创建节点的名字
@Override
public void processResult(int rc, String path, Object ctx, String name) {
StringBuffer sb=new StringBuffer();
sb.append("rc="+rc).append("\n");
sb.append("path="+path).append("\n");
sb.append("ctx="+ctx).append("\n");
sb.append("name="+name);
System.out.println(sb.toString());
/**
*rc=0
*path=/node_124
*ctx=sxf创建
*name=/node_124
*
*/
} } }

三:客户端删除节点测试

 package com.yeepay.sxf.deleteNode;

 import java.io.IOException;

 import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper; /**
*同步删除节点中存取的值
* @author sxf
*
*/
public class TestDeleteNodeSyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestDeleteNodeSyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//删除一个节点
//第一个参数:删除节点的全路径
//第二个参素:节点的版本(类似乐观锁),当为-1时,对版本无限制
zooKeeper.delete("/node_127", -1);
}else if(event.getType()==EventType.NodeDataChanged){ } } }catch(Exception e){
e.printStackTrace();
} } } package com.yeepay.sxf.deleteNode; import java.io.IOException; import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper; /**
*异步删除节点
* @author sxf
*
*/
public class TestDeleteNodeAsyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestDeleteNodeAsyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//第一个参数:要删除的节点的全路径
//第二个参数:要删除节点的版本号(类似乐观锁)
//第三个参数:异步删除的回调实现类
//第四个参数:删除传入的上下文
zooKeeper.delete("/node_126", -1, new IsDeleteCallBack(), "删除节点sxf"); } } }catch(Exception e){
e.printStackTrace();
} } /**
* 异步删除回调接口实现类
* @author sxf
*
*/
static class IsDeleteCallBack implements AsyncCallback.VoidCallback{ //第一个参数:返回删除成功rc
@Override
public void processResult(int rc, String path, Object ctx) {
StringBuffer sb=new StringBuffer();
sb.append("rc="+rc).append("\n");
sb.append("path="+path).append("\n");
sb.append("ctx="+ctx).append("\n");
System.out.println(sb.toString());
/**
* rc=0
* path=/node_126
* ctx=删除节点sxf
*/
} } }

四:客户端判断节点是否存在测试

 package com.yeepay.sxf.existsNode;

 import java.io.IOException;

 import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; /**
*同步判断节点是否存在
* @author sxf
*
*/
public class TestExistsNodeSyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestExistsNodeSyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//第一个参数:判断节点的全路径
//第二个参数:是否注册监听器
Stat stat=zooKeeper.exists("/node_123",true);
System.out.println(stat);
}else if(event.getType()==EventType.NodeDataChanged){
//节点数据改变
Stat stat=zooKeeper.exists(event.getPath(),true);
System.out.println("节点数据改变=>"+stat);
}else if(event.getType()==EventType.NodeCreated){
//节点被创建
Stat stat=zooKeeper.exists(event.getPath(),true);
System.out.println("节点被创建=>"+stat);
}else if(event.getType()==EventType.NodeDeleted){
//节点被删除
Stat stat=zooKeeper.exists(event.getPath(),true);
System.out.println("节点被删除=>"+stat);
} } }catch(Exception e){
e.printStackTrace();
} } } package com.yeepay.sxf.existsNode; import java.io.IOException; import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; /**
*异步判断节点是否存在
* @author sxf
*
*/
public class TestExistsNodeAsyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestExistsNodeAsyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
zooKeeper.exists("/node_123", true, new IsStatCallBack(), "sxf判断节点是否存在");
}else if(event.getType()==EventType.NodeDataChanged){
//节点数据改变
zooKeeper.exists("/node_123", true, new IsStatCallBack(), "sxf判断节点是否存在");
System.out.println("TestExistsNodeAsyn.process(节点数据改变)");
}else if(event.getType()==EventType.NodeCreated){
//节点被创建
zooKeeper.exists("/node_123", true, new IsStatCallBack(), "sxf判断节点是否存在");
System.out.println("TestExistsNodeAsyn.process(节点被创建)");
}else if(event.getType()==EventType.NodeDeleted){
//节点被删除
zooKeeper.exists("/node_123", true, new IsStatCallBack(), "sxf判断节点是否存在");
System.out.println("TestExistsNodeAsyn.process(节点被删除)");
} } }catch(Exception e){
e.printStackTrace();
} } //节点是否存在的异步回调接口实现类
static class IsStatCallBack implements AsyncCallback.StatCallback{ @Override
public void processResult(int rc, String path, Object ctx, Stat stat) {
StringBuffer sb=new StringBuffer();
sb.append("rc="+rc).append("\n");
sb.append("path="+path).append("\n");
sb.append("ctx="+ctx).append("\n");
sb.append("stat="+stat).append("\n");
System.out.println(sb.toString());
} } }

五:客户端获取节点列表测试

 package com.yeepay.sxf.getNode;

 import java.io.IOException;
import java.util.List; import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper; /**
* 同步获取节点列表node
* @author sxf
*
*/
public class TestGetNodeSyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestGetNodeSyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//获取制定节点的子节点列表
//第一参数:节点路径
//第二个参数:是否需要关注该节点的子节点列表变化。关注:true 不关注:false (事件监听器)
List<String> nodesList=zooKeeper.getChildren("/", true);
System.out.println("/ 下的子节点列表==>"+nodesList);
/**
* / 下的子节点列表==>[node_123, node_124, zookeeper]
*/
}else if(event.getType()==EventType.NodeChildrenChanged){
//如果节点发生变化,则会触发该事件.当别的地方添加一个节点,则该方法被调用
System.out.println("TestGetNodeSyn.process()变化的地址:"+event.getPath());//TestGetNodeSyn.process()变化的地址:/
List<String> nodesList=zooKeeper.getChildren(event.getPath(), true);
System.out.println("TestGetNodeSyn.process(节点发生变化==>)"+nodesList);
/**
* TestGetNodeSyn.process(节点发生变化==>)[node_123, node_124, zookeeper, node_125]
*/
} } }catch(Exception e){
e.printStackTrace();
} } } package com.yeepay.sxf.getNode; import java.io.IOException;
import java.util.List; import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; /**
* 异步获取节点列表
* @author sxf
*
*/
public class TestGetNodeAsyn implements Watcher { private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestGetNodeAsyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/ @Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//获取制定节点的子节点列表
//第一参数:节点路径
//第二个参数:是否需要关注该节点的子节点列表变化。关注:true 不关注:false (事件监听器)
//第三个参数:异步回调函数
//第四个参数:异步获取传入上下文参数
zooKeeper.getChildren("/", true, new ISChildrenCallback(), "SXF获取子节点列表");
/**
* / 下的子节点列表==>[node_123, node_124, zookeeper]
*/
}else if(event.getType()==EventType.NodeChildrenChanged){
zooKeeper.getChildren(event.getPath(), true, new ISChildrenCallback(), "SXF获取子节点列表");
} } }catch(Exception e){
e.printStackTrace();
}
} //异步获取子节点列表的回调
static class ISChildrenCallback implements AsyncCallback.Children2Callback{ @Override
public void processResult(int rc, String path, Object ctx,List<String> children, Stat stat) {
StringBuffer sb=new StringBuffer();
sb.append("rc="+rc).append("\n");
sb.append("path="+path).append("\n");
sb.append("ctx="+ctx).append("\n");
sb.append("children="+children).append("\n");
sb.append("stat="+stat).append("\n");
System.out.println(sb.toString());
/**
* rc=0
* path=/
* ctx=SXF获取子节点列表
* children=[node_126, node_127, node_123, node_124, zookeeper, node_125]
* stat=0,0,0,0,0,8,0,0,0,6,4294967354
*/ } } }

六:客户端获取节点值测试

 package com.yeepay.sxf.getNodeValue;

 import java.io.IOException;

 import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; /**
*同步获取节点中存取的值
* @author sxf
*
*/
public class TestGetNodeValueSyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestGetNodeValueSyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//如果没有权限,可以注册权限
zooKeeper.addAuthInfo("digest", "shangxiaofei:shangxiaofei".getBytes()); //第一个参数:要获取节点存储值的全路径
//第二个参数:是否注册一个事件监听器
//第三个参数:一个状态实例
byte[] nodeValueByte=zooKeeper.getData("/node_128", true, new Stat());
System.out.println("TestGetNodeValueSyn.process(获取/node_128的值:)"+new String(nodeValueByte));
//TestGetNodeValueSyn.process(获取/node_127的值:)aaaaaaaa
}else if(event.getType()==EventType.NodeDataChanged){
//当关注的节点的值发生了变化则通知
byte[] nodeValueByte=zooKeeper.getData(event.getPath(), true, new Stat());
System.out.println("TestGetNodeValueSyn.process(/node_127的值发生了变化:)"+new String(nodeValueByte));
//TestGetNodeValueSyn.process(/node_127的值发生了变化:)shuihongjie
} } }catch(Exception e){
e.printStackTrace();
} } } package com.yeepay.sxf.getNodeValue; import java.io.IOException; import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; /**
* 异步获取节点中存取的值
* @author sxf
*
*/
public class TestGetNodeValueASyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestGetNodeValueASyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//异步获取节点中的值
zooKeeper.getData("/node_127", true, new IsDataCallBack(), "sxf修改");
}else if(event.getType()==EventType.NodeDataChanged){
zooKeeper.getData(event.getPath(), true, new IsDataCallBack(), "sxf修改");
} } }catch(Exception e){
e.printStackTrace();
} } //异步获取数据的回调函数
static class IsDataCallBack implements AsyncCallback.DataCallback{ @Override
public void processResult(int rc, String path, Object ctx, byte[] data,
Stat stat) {
StringBuffer sb=new StringBuffer();
sb.append("rc="+rc).append("\n");
sb.append("path="+path).append("\n");
sb.append("ctx="+ctx).append("\n");
sb.append("data="+new String(data)).append("\n");
sb.append("stat="+stat).append("\n");
System.out.println(sb.toString());
/**
* rc=0
*path=/node_127
*ctx=sxf修改
*data=tianxiabangchang
*stat=4294967354,4294967367,1456371531643,1456373368574,4,0,0,0,16,0,4294967354
*/
} } }

七:客户端修改节点数据测试

 package com.yeepay.sxf.updateNodeData;

 import java.io.IOException;

 import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; /**
*同步修改节点数据
* @author sxf
*
*/
public class TestUpdateNodeValueSyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestUpdateNodeValueSyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//第一个参数:要修改的节点的全路径
//第二个参数:要修改的节点的数据内容
//第三个参数:版本号
Stat stat=zooKeeper.setData("/node_124", "sxfupdatenodedata".getBytes(), -1);
System.out.println("TestUpdateNodeValueSyn.process()"+stat);
} } }catch(Exception e){
e.printStackTrace();
} } } package com.yeepay.sxf.updateNodeData; import java.io.IOException; import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; /**
*异步修改节点数据
* @author sxf
*
*/
public class TestUpdateNodeValueAsyn implements Watcher{ private static ZooKeeper zooKeeper; public static void main(String[] args) throws IOException, InterruptedException {
//实例化zooKeeper链接
zooKeeper=new ZooKeeper("10.151.30.75:2181", 5000,new TestUpdateNodeValueAsyn());
//创建链接
Thread.sleep(Integer.MAX_VALUE);
} /**
* event
* (1)zookeeper链接状态 event.getState()
* (2)zookeeper事件类型 event.getType()
* (3)zookeeper事件触发的节点路径 event.getPath()
*/
@Override
public void process(WatchedEvent event) {
try{
//已经连接做一件事情
if(event.getState()==KeeperState.SyncConnected){ if(event.getType()==EventType.None&&event.getPath()==null){
//第一个参数:要修改的节点的全路径
//第二个参数:要修改的节点的数据内容
//第三个参数:版本号
zooKeeper.setData("/node_124", "yangkai".getBytes(), -1, new ISupdateDataCallBack(), "sxf修改节点数据");
} } }catch(Exception e){
e.printStackTrace();
} } /**
* 异步修改节点数据的回调接口的实现
* @author sxf
*
*/
static class ISupdateDataCallBack implements AsyncCallback.StatCallback{ @Override
public void processResult(int rc, String path, Object ctx, Stat stat) {
StringBuffer sb=new StringBuffer();
sb.append("rc="+rc).append("\n");
sb.append("path="+path).append("\n");
sb.append("ctx="+ctx).append("\n");
sb.append("stat="+stat).append("\n");
System.out.println(sb.toString());
} }
}

六:ZooKeeper的java客户端api的使用的更多相关文章

  1. Zookeeper的java客户端API使用方法(五)

    前面几篇博文,我们简单的介绍了一下zookeeper,如何安装zookeeper集群,以及如何使用命令行等.这篇博文我们重点来看下Zookeeper的java客户端API使用方式. 创建会话 客户端可 ...

  2. zookeeper的Java客户端API

    zookeeper作为一个分布式服务框架,主要用来解决分布式数据一致性问题,对多种语言提供了API.这里主要记录下JAVA客户端API的使用. 1.创建会话 客户端可以通过创建一个ZooKeeper实 ...

  3. [转载] ZooKeeper的Java客户端API

    转载自 http://www.cnblogs.com/ggjucheng/p/3370359.html http://zookeeper.apache.org/doc/trunk/javaExampl ...

  4. 12. ZooKeeper之Java客户端API使用—创建会话。

    转自:https://blog.csdn.net/en_joker/article/details/78686649 客户端可以通过创建一个ZooKeeper(org.apache.zookeeper ...

  5. 13.Zookeeper的java客户端API使用方法

    转自:https://blog.csdn.net/jiuqiyuliang/article/details/56012027

  6. ZooKeeper学习总结(2)——ZooKeeper开源Java客户端ZkClient使用

    zkclient是zookeeper的Java客户端.它让Zookeeper API 使用起来更简单:它非常方便订阅各种事件并自动重新绑定事件(会话建立.节点修改.节点删除.子节点变更等):它提供了s ...

  7. JAVA客户端API调用memcached两种方式

    1. memcached client for java客户端API:memcached client for java 引入jar包:java-memcached-2.6.2.jar package ...

  8. 02.ZooKeeper的Java客户端使用

    1.ZooKeeper常用客户端比较 1.ZooKeeper常用客户端     zookeeper的常用客户端有3种,分别是:zookeeper原生的.Apache Curator.开源的zkclie ...

  9. Java客户端API

    添加依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookee ...

随机推荐

  1. cuda环境下安装opencv出现nvcc warning : The 'compute_11'

    警告打印: nvcc warning : The 'compute_11', 'compute_12', 'compute_13', 'sm_11', 'sm_12', and 'sm_13' arc ...

  2. 关于equals与hashcode的重写

    我想写的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法 2.在什么情况下需要重写hashCode()方法和equals()方法 3.如何重写这两个方法 **** ...

  3. mysql绿色版安装,多实例安装

    1.为什么要装多个mysql多实例? 关于这个的原因,我目前了解为建立一个主数据库,一个或者多个从库,实现一主多从或者主从复制的目的. 2.设么是mysql的多实例? MySQL多实例就是在一台机器上 ...

  4. [EXT JS]"hasMany" association on ExtJS 4.1.1a

    ExtJS uses "hasMany" association to support nested json. However the sencha docs lacks wel ...

  5. Hive、Pig、HBase的关系与区别

    欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! Pig 一种操作hadoop的轻量级脚本语言,最 ...

  6. 知问前端——Ajax登录

    本文,将使用Ajax登录. 一.服务器端代码 is_user.php: <?php require 'config.php'; $query = mysql_query("SELECT ...

  7. Mantis 从Windows 迁移到Linux上

    1. 导出windows manits的mysql数据库文件, 在cmd运行:mysqldump -uroot -p3edc$RFV bugtracker > C:/mantis.sql; 2. ...

  8. 「6月雅礼集训 2017 Day11」delight

    [题目大意] 有$n$天,每天能吃饭.睡觉.什么事也不干 每天吃饭的愉悦值为$e_i$,睡觉的愉悦值为$s_i$,什么都不干愉悦值为0. 要求每连续$k$天都要有至少$E$天吃饭,$S$天睡觉. 求最 ...

  9. Bzoj4873 [SXOI2017]寿司餐厅

    Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 64  Solved: 45 Description Kiana最近喜欢到一家非常美味的寿司餐厅用餐.每 ...

  10. java 连接MySQL的代码

    1.java connect MySQL as conding. https://www.cnblogs.com/centor/p/6142775.html