Zookeeper中Watcher监听实现增删改
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监听实现增删改的更多相关文章
- Zookeeper中的watcher监听和leader选举机制
watcher监听 什么是watcher接口 同一个事件类型在不同的通知状态中代表的含义有所不同,下图列举了常见的通知状态和事件类型. Watcher通知状态与事件类型一览 上图列举了ZooKeepe ...
- 8.7.ZooKeeper Watcher监听
1.ZooKeeper Watcher ZooKeeper 提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象, 当这个主题对 ...
- Zookeeper数据类型、节点类型、角色、watcher监听机制
1.Zookeeper数据类型:层次化目录结构+少量数据 Zookeeper包含层次化的目录结构,每个Znode都有唯一的路径标识,Znode可以包含数据和子节点. 其中Znode数据可以有多个版本, ...
- Zookeeper Curator 事件监听 - 秒懂
目录 写在前面 1.1. Curator 事件监听 1.1.1. Watcher 标准的事件处理器 1.1.2. NodeCache 节点缓存的监听 1.1.3. PathChildrenCache ...
- 新建Oracle数据库时,提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序
新建一个oracle数据库时,当提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序等字样的时候,问题是那个监听的服务没有启动,解决方法如下: 打开cmd命 ...
- Android中如何监听GPS开启和关闭
转自 chenming 原文 Android中如何监听GPS开启和关闭 摘要: 本文简单总结了如何监听GPS开关的小技巧 有时需要监听GPS的开关(这种需求并不多见).实现的思路是监听代表 GPS ...
- Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差
Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差别 Nginx连接fastcgi的方式有2种:unix domain socket和TCP,Uni ...
- oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序
15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...
- Android 关于ListView中按钮监听的优化问题(方法二)
关于ListView中按钮监听的优化问题(方法一)地址: http://www.cnblogs.com/steffen/p/3951901.html 之前的方法一,虽然能够解决position的传递, ...
随机推荐
- docker升级步骤及注意事项
centos系统默认安装的docker版本是1.13版本,在安装部分镜像时可能出现兼容问题,本文通过实际操作总结Docker升级最新版本步骤及可能出现的问题,供各位参考. 环境:CentOS Linu ...
- C语言编程的一些小总结
1. static:可用于定义静态局部变量 在局部变量前,加上关键字static,该变量就被定义成为一个静态局部变量. 举一个静态局部变量的例子: void fn() { static int n=1 ...
- 12c分区增强功能,新功能(文档ID 1568010.1)
12c Partitioning Enhancements, New Features (Doc ID 1568010.1) APPLIES TO: Oracle Database - Enterpr ...
- HAProxy实现网站高并发集群
简介:HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会 ...
- s3c2440裸机-异常中断(一. 异常、中断的原理与流程)
1.异常中断概述 在arm架构的处理器中,cpu有7中工作模式,2中工作状态. 1.CPU模式(Mode): 7种Mode: 除了usr/sys,其他5种都是异常模式.我们知道中断属于异常的2中,中断 ...
- Object::connect: No such slot xxx 解决方法
在所有代码和槽函数全部写好之后,进行编译时竟然报 No such slot xxxx,奇怪 Starting E:\01_project\03_C++\key\debug\key.exe... Obj ...
- python访问Apollo获取配置
操作系统 : CentOS7.3.1611_x64 Python 版本 : 3.6.8 Apollo源码地址: https://github.com/ctripcorp/apollo 访问Apollo ...
- HBuildX报错此插件的使用依赖于外部应用程序eslint,本机未检测到此应用
最近刚刚开始用HBuildX,结果保存时报错 解决方案: 打开HBuilderX 打开plugins 打开eslint-vue, 然后Git Bash Here,npm install 重新安装一下 ...
- RobotFramework不同版本优劣势
一.RIDE 1.5.2.1 1. 安装: pip install robotframework-ride==1.5.2.1 2. 优点: 此版本是RIDE发布以来最为稳定的版本,使用性能上也较为流畅 ...
- C#_.NetFramework_WebAPI项目_EXCEL数据导出
[推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出] 项目需要引用NPOI的Nuget包: A-2--EXCEL数据导出--WebAPI项目--N ...