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. C#&.Net干货分享- 构造BaiduLanguageHelper对接百度的语言翻译

    全部是封装的API源码... namespace Frame.Api{    /// <summary>    /// 百度多语言支持器    /// </summary>   ...

  2. MySQL数据库~~~~pymysql 连接 MySQL的客户端

    import pymysql conn = pymysql.connect( host = '127.0.0.1', # 主机 port = 3306, # 端口号 user = 'root', # ...

  3. 用PYTHON首选的GUI库WXPYTHON做程序界面

    大家好,我是A8U神经网络,今天又要跟大家分享一下wxWidgets开发神经网络程序界面的一些经验,希望对开发有兴趣的朋友有所帮助.跨平台的GUI工具库以GTK +,Qt和wxWidgets闻名. G ...

  4. mysqlbinlog-Note

    binlog_format = mixedlog-bin = /data/mysql/mysql-binexpire_logs_days = 7 #binlog过期清理时间max_binlog_siz ...

  5. HTML和css常见问题解答2

    1.将一个块级元素水平和垂直居中有几种方法?分别是什么? 四种方式: (1).要让div等块级元素水平和垂直居中,必需知道该div等块级元素的宽度和高度,然后设置位置为绝对位置,距离页面窗口左边框和上 ...

  6. Mybatis基本类型参数非空判断(异常:There is no getter for property...)

    先看一小段代码 <select id="queryByPhone" parameterType="java.lang.String" resultType ...

  7. 【linux命令 】文件特殊权限(SUID、SGID、SBIT)

    chmod 2770 /home/admins,刚看到这个命令,有点不解,后边770分别表示用户,组,其他人,前面的2不知道代表的是什么意思.百度之后发现2是代表八进制数,也是一种权限,它的三个bit ...

  8. gitlab runner使用docker报错(x509: certificate signed by unknown authority)定位

    如果gitlab runner使用docker,docker是普通配置,配置好后,runner就可以正常执行任务了. 另外一个环节Docker配置了tls加密连接,添加runner后,runner的配 ...

  9. Java中的String为什么要设计成不可变的?

    一.不可变类和不可变对象 Normally,you create an object and allow its contents to be changed later.However ,occas ...

  10. Git详细学习教程

    作者:gafish https://github.com/gafish/gafish.github.com Git简介 Git 是一种分布式版本控制系统,它可以不受网络连接的限制,加上其它众多优点,目 ...