8.1 连接方法

package com.zookeeper.day01;

import org.apache.zookeeper.*;

import java.io.IOException;

public class ZookeeperWatcher implements Watcher {
//连接地址
private static final String ZK_ADDRESS="0.0.0.0:2181";
//超时时间
private static final Integer ZK_TIMEOUT=2000; private ZooKeeper zooKeeper; public ZookeeperWatcher() {
openConnection(ZK_ADDRESS,ZK_TIMEOUT); } /**
* 回调方法,监听连接,监听增删改节点
* @param watchedEvent
*/
@Override
public void process(WatchedEvent watchedEvent) {
//获取当前的状态
Event.KeeperState keeperState = watchedEvent.getState();
//获取通知类型
Event.EventType eventType=watchedEvent.getType();
//获取操作节点的路径
String path=watchedEvent.getPath(); System.out.println("当前状态为:"+keeperState+"\t通知类型为:"+eventType+"\t操作的节点路径:"+path); //已经成功连接
if (Event.KeeperState.SyncConnected==keeperState){
//连接状态
if (Event.EventType.None==eventType){
System.out.println("--------连接事件回调--------");
}
}
} /**
* 连接方法
*/
public void openConnection(String zk_address,Integer zk_timeout){
try {
zooKeeper = new ZooKeeper(zk_address, zk_timeout, this);
System.out.println("Zookeeper连接成功!");
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 关闭连接
*/
public void closeConnection(){
if (zooKeeper!=null){
try {
zooKeeper.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
//创建实体类对象
ZookeeperWatcher zookeeperWatcher=new ZookeeperWatcher();
//关闭连接
zookeeperWatcher.closeConnection();
}
}

控制台效果:

  

8.2 添加节点

package com.zookeeper.day01;

import org.apache.zookeeper.*;

import java.io.IOException;

public class ZookeeperWatcher implements Watcher {
//连接地址
private static final String ZK_ADDRESS="0.0.0.0:2181";
//超时时间
private static final Integer ZK_TIMEOUT=2000; private ZooKeeper zooKeeper; public ZookeeperWatcher() {
openConnection(ZK_ADDRESS,ZK_TIMEOUT); } /**
* 回调方法,监听连接,监听增删改节点
* @param watchedEvent
*/
@Override
public void process(WatchedEvent watchedEvent) {
//获取当前的状态
Event.KeeperState keeperState = watchedEvent.getState();
//获取通知类型
Event.EventType eventType=watchedEvent.getType();
//获取操作节点的路径
String path=watchedEvent.getPath(); System.out.println("当前状态为:"+keeperState+"\t通知类型为:"+eventType+"\t操作的节点路径:"+path); //已经成功连接
if (Event.KeeperState.SyncConnected==keeperState){
//连接状态
if (Event.EventType.None==eventType){
System.out.println("--------连接事件回调--------");
}
//创建节点
if (Event.EventType.NodeCreated==eventType){
System.out.println("------创建节点事件回调------");
}
}
} /**
* 连接方法
*/
public void openConnection(String zk_address,Integer zk_timeout){
try {
zooKeeper = new ZooKeeper(zk_address, zk_timeout, this);
System.out.println("Zookeeper连接成功!");
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 关闭连接
*/
public void closeConnection(){
if (zooKeeper!=null){
try {
zooKeeper.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} /**
* 添加节点
*/
public void createNode(String path,String data){
try {
//启动监听
zooKeeper.exists(path,true);
String result = zooKeeper.create(path, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("创建节点成功:"+result);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
//创建实体类对象
ZookeeperWatcher zookeeperWatcher=new ZookeeperWatcher();
//调用创建节点方法
zookeeperWatcher.createNode("/zkNode","zkValue");
//关闭连接
zookeeperWatcher.closeConnection();
}
}

控制台效果:

   

8.3 修改节点

package com.zookeeper.day01;

import org.apache.zookeeper.*;

import java.io.IOException;

public class ZookeeperWatcher implements Watcher {
//连接地址
private static final String ZK_ADDRESS="0.0.0.0:2181";
//超时时间
private static final Integer ZK_TIMEOUT=2000; private ZooKeeper zooKeeper; public ZookeeperWatcher() {
openConnection(ZK_ADDRESS,ZK_TIMEOUT); } /**
* 回调方法,监听连接,监听增删改节点
* @param watchedEvent
*/
@Override
public void process(WatchedEvent watchedEvent) {
//获取当前的状态
Event.KeeperState keeperState = watchedEvent.getState();
//获取通知类型
Event.EventType eventType=watchedEvent.getType();
//获取操作节点的路径
String path=watchedEvent.getPath(); System.out.println("当前状态为:"+keeperState+"\t通知类型为:"+eventType+"\t操作的节点路径:"+path); //已经成功连接
if (Event.KeeperState.SyncConnected==keeperState){
//连接状态
if (Event.EventType.None==eventType){
System.out.println("--------连接事件回调--------");
}
//修改节点
if(Event.EventType.NodeDataChanged==eventType){
System.out.println("------修改节点事件回调------");
} /**
* 连接方法
*/
public void openConnection(String zk_address,Integer zk_timeout){
try {
zooKeeper = new ZooKeeper(zk_address, zk_timeout, this);
System.out.println("Zookeeper连接成功!");
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 关闭连接
*/
public void closeConnection(){
if (zooKeeper!=null){
try {
zooKeeper.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} /**
* 修改节点
*/
public void setNode(String path,String data){
try {
//启动监听
zooKeeper.exists(path,true);
zooKeeper.setData(path, data.getBytes(), -1);
System.out.println("修改节点成功");
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
//创建实体类对象
ZookeeperWatcher zookeeperWatcher=new ZookeeperWatcher();
//调用修改节点方法
zookeeperWatcher.setNode("/zkNode","zkValueSet");
//关闭连接
zookeeperWatcher.closeConnection();
}
}

控制台效果:

   

8.4 删除节点

package com.zookeeper.day01;

import org.apache.zookeeper.*;

import java.io.IOException;

public class ZookeeperWatcher implements Watcher {
//连接地址
private static final String ZK_ADDRESS="0.0.0.0:2181";
//超时时间
private static final Integer ZK_TIMEOUT=2000; private ZooKeeper zooKeeper; public ZookeeperWatcher() {
openConnection(ZK_ADDRESS,ZK_TIMEOUT); } /**
* 回调方法,监听连接,监听增删改节点
* @param watchedEvent
*/
@Override
public void process(WatchedEvent watchedEvent) {
//获取当前的状态
Event.KeeperState keeperState = watchedEvent.getState();
//获取通知类型
Event.EventType eventType=watchedEvent.getType();
//获取操作节点的路径
String path=watchedEvent.getPath(); System.out.println("当前状态为:"+keeperState+"\t通知类型为:"+eventType+"\t操作的节点路径:"+path); //已经成功连接
if (Event.KeeperState.SyncConnected==keeperState){
//连接状态
if (Event.EventType.None==eventType){
System.out.println("--------连接事件回调--------");
}
//删除节点
if(Event.EventType.NodeDeleted==eventType){
System.out.println("------删除节点事件回调------");
}
}
} /**
* 连接方法
*/
public void openConnection(String zk_address,Integer zk_timeout){
try {
zooKeeper = new ZooKeeper(zk_address, zk_timeout, this);
System.out.println("Zookeeper连接成功!");
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 关闭连接
*/
public void closeConnection(){
if (zooKeeper!=null){
try {
zooKeeper.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} /**
* 删除节点
*/
public void deleteNode(String path){
try {
//启动监听
zooKeeper.exists(path,true);
zooKeeper.delete(path, -1);
System.out.println("删除节点成功");
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
//创建实体类对象
ZookeeperWatcher zookeeperWatcher=new ZookeeperWatcher();
//调用删除节点方法
zookeeperWatcher.deleteNode("/zkNode");
//关闭连接
zookeeperWatcher.closeConnection();
}
}

控制台效果:

  

Zookeeper中Watcher监听实现增删改的更多相关文章

  1. Zookeeper中的watcher监听和leader选举机制

    watcher监听 什么是watcher接口 同一个事件类型在不同的通知状态中代表的含义有所不同,下图列举了常见的通知状态和事件类型. Watcher通知状态与事件类型一览 上图列举了ZooKeepe ...

  2. 8.7.ZooKeeper Watcher监听

    1.ZooKeeper Watcher ZooKeeper 提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象, 当这个主题对 ...

  3. Zookeeper数据类型、节点类型、角色、watcher监听机制

    1.Zookeeper数据类型:层次化目录结构+少量数据 Zookeeper包含层次化的目录结构,每个Znode都有唯一的路径标识,Znode可以包含数据和子节点. 其中Znode数据可以有多个版本, ...

  4. Zookeeper Curator 事件监听 - 秒懂

    目录 写在前面 1.1. Curator 事件监听 1.1.1. Watcher 标准的事件处理器 1.1.2. NodeCache 节点缓存的监听 1.1.3. PathChildrenCache ...

  5. 新建Oracle数据库时,提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序

    新建一个oracle数据库时,当提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序等字样的时候,问题是那个监听的服务没有启动,解决方法如下: 打开cmd命 ...

  6. Android中如何监听GPS开启和关闭

    转自 chenming 原文 Android中如何监听GPS开启和关闭   摘要: 本文简单总结了如何监听GPS开关的小技巧 有时需要监听GPS的开关(这种需求并不多见).实现的思路是监听代表 GPS ...

  7. Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差

    Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差别   Nginx连接fastcgi的方式有2种:unix domain socket和TCP,Uni ...

  8. oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

    15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...

  9. Android 关于ListView中按钮监听的优化问题(方法二)

    关于ListView中按钮监听的优化问题(方法一)地址: http://www.cnblogs.com/steffen/p/3951901.html 之前的方法一,虽然能够解决position的传递, ...

随机推荐

  1. iOS---------金额转大写

    -(NSString *)digitUppercase:(NSString *)numstr{ double numberals=[numstr doubleValue]; NSArray *numb ...

  2. Eclipse如何重置窗口

    https://jingyan.baidu.com/article/915fc41459585f51394b20c3.html 在Eclipse进行开发的时候,我们经常会由于这个窗口或者那个窗口没有打 ...

  3. 任正非讲话稿 PDF整理版

    任正非讲话稿 PDF整理版 任正非思想之路 这里收录了任正非讲话稿400余篇,从1994年到2018年,从深圳.中国到东南亚.非洲.欧洲.美洲,从研发.市场.服务到财经.人力资源.战略.内控与公共关系 ...

  4. C语言入门-全局变量

    一.全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数无关,在任何函数内部都可以使用它们 #include <stdio.h> int f(void ...

  5. python(二) jupyter 快捷键

    jupyter notebook 中的快捷键介绍 当你熟练使用notebooks的基本功能后,掌握他的快捷键是十分必要的,这样可以大大提高你的工作效率.下面是一些比较常用的快捷键: 编辑模式:点击单元 ...

  6. 发布Cocos2d-x的PC端程序

    发布Cocos2d-x的PC端程序 一.创建一个Release的项目 1.利用根目录下的解决方案生成Release.win32文件夹 2.新建一个cocos2d项目(比如解决方案名称MySolutio ...

  7. 关于tomcat对编码不正确的url参数报错的解决

    按照规范,url参数必须使用限定字符,其它字符需要进行编码,用像js的encodeurlcomponent函数. 在IE和360浏览器的兼容模式,不会自动对url的参数进行编码,会导致tomcat报错 ...

  8. doc 如何在指定的位置打印字符和颜色

    编程:在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串weclome to masm! B8000H~BFFFFH共32KB 的空间,为80*25彩色字符模式的显示缓冲区. 在80*25彩色字符模式 ...

  9. docker cp命令出错问题

    docker cp 4e6:/etc/nginx/nginx.conf /home/nginx/conf 使用docker在复制官方nginx容器的conf文件时,发生了错误. Error respo ...

  10. VUE Base64编码图片展示与转换图片

    图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址,使用 base64 传输图片文件可以节省一个 http 请求,图片的 base64 编码可以算是前端优化的一 ...