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. tensorflow 神经网络模型概览;熟悉Eager 模式;

    典型神经网络模型:(图片来源:https://github.com/madalinabuzau/tensorflow-eager-tutorials) 保持更新,更多内容请关注 cnblogs.com ...

  2. Redis配置文件详解(redis.conf)

    # vi redis.conf   daemonize yes #是否以后台进程运行 pidfile /var/run/redis/redis-server.pid    #pid文件位置 port ...

  3. 九、ITK-VTK混合编程--将序列dcm图像通过ITK读去并通过VTK显示出来

    一.初步介绍 上一个博客里面我记录了VTK的安装,以及相关的工程代码的构建,但是实际上上一个博客测试的代码的例子仅仅只是VTK程序的例子.而我实际上希望能够实现的是VTK和ITK混合编程. 在这里还是 ...

  4. C++ std::vector 基本用法2

    #include <iostream> #include <vector> using namespace std; int main() { int ar[10] = { 1 ...

  5. [译]Vulkan教程(19)渲染和呈现

    [译]Vulkan教程(19)渲染和呈现 Rendering and presentation 渲染和呈现 Setup 设置 This is the chapter where everything ...

  6. 记一起Java大对象引起的FullGC事件及GC知识梳理

    背景 最近发生了一起 Java 大对象引起的 FullGC 事件.记录一下. 有一位商家刷单,每单内有 50+ 商品.然后进行订单导出.订单导出每次会从订单详情服务取100条订单数据.由于 100 条 ...

  7. filter,map,reduce三个数组高阶函数的使用

    filter ,map ,reduce三个高阶函数的使用 普通方法解决数据问题 const nums1= [10,20,111,222,444,40,50] // 需求1.取出小于100的数字 // ...

  8. IDEA乱码Tomcat控制台乱码输出乱码报文乱码

    电脑重装系统后,重新安装了最新版的IDEA 2019.2.2,出现乱码.百度了很多,慢慢的解决了乱码的问题,现记录如下.方法因人而异,不同的问题不一样的方法. 第一 修改IDEA文件编码格式 设置id ...

  9. javascript中的定时器入门

    JavaScript提供定时器(timer)的功能,可以延期执行或重复执行函数或代码段. window对象提供了三个方法来实现定时器的效果,分别是setTimeout().setInternal()和 ...

  10. Java描述设计模式(01):单例模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.单例模式 1.概念图解 单例设计模式定义:确保这个类只有一个实例,并且自动的实例化向系统提供这个对象. 2.样例代码 package co ...