ZooKeeper设置监听器

ZooKeeper设置监听器,通过getData()/getChildern()/xists()方法。
步骤:
1.创建监听器:创建一个实现Watcher接口的类,实现process()方法。这个方法会在ZooKeeper向客户端发送一个Watcher事件通知的时候被调用。
2.注册监听器:使用getData(),getChildern(),或exists()方法为特定的znode注册监听器。方法的第二个参数是一个布尔值,若为true,表示该znode设置监听器。
3.触发监听器:当znode发生变化时,比如节点内容改变,节点下的子节点列表改变,ZooKeeper会触发相应的监听器,并调用process()方法。
注:
getData()和exists()方法可以设置数据监视点,当节点的数据发生变化时,会触发监听器。
getChidren()方法可以设置子节点监视点,当节点的子节点列表发生变化时,会触发监听器。
ZooKeeper的监听器是一次性的,一旦触发了监听器,还想继续监听这个节点的变化,需要重新注册监听器。
示例如下:

package com.example.demoone;import com.cloudera.impala.jdbc41.internal.apache.zookeeper.KeeperException;
import com.cloudera.impala.jdbc41.internal.apache.zookeeper.WatchedEvent;
import com.cloudera.impala.jdbc41.internal.apache.zookeeper.Watcher;
import com.cloudera.impala.jdbc41.internal.apache.zookeeper.ZooKeeper;import java.io.IOException;/*** @author LSY* @DATE 2024/4/19 21:05*/
public class ZooKeeperWatcherDemo {public static void main(String[] args) throws InterruptedException, KeeperException, IOException {//创建ZooKeeper客户端实例,这个客户端会连接到运行在本地机器的2181端口的ZooKeeper服务器//会话超时时间是3000毫秒,当接收到Watcher事件通知时,会调用Watcher的Process()方法。//localhost:2181 :是ZooKeeper服务器的地址和端口号。//3000:会话超时时间,单位是毫秒。// 如果在这段时间内,客户端没有与服务器进行任何交互(发送请求或接收响应),// 服务器会认为这个会话已经超时,然后关闭这个会话。ZooKeeper zooKeeper=new ZooKeeper("localhost:2181", 3000, new Watcher() {@Overridepublic void process(WatchedEvent watchedEvent) {//process()方法会在ZooKeeper向客户端发送一个Watcher事件通知时被调用。System.out.println("默认事件: "+watchedEvent.getType());}});//创建一个监听器:watcher是一个实现Watcher接口的对象,定义怎么样响应ZooKeeper的通知。//当/product这个节点的状态发生变化时,ZooKeeper会调用watcher的process()方法。Watcher watcher=new Watcher() {@Overridepublic void process(WatchedEvent event) {System.out.println("触发了"+event.getType()+"事件");}};//使用exists()方法注册监听器:在ZooKeeper中注册一个监听器来监控/product这个节点的状态//exists()会检查/product这个节点是否存在,同时注册一个监听器watcher。//当/product这个节点状态发生变化时(节点被创建,删除或者节点数据发生变化),ZooKeeper会触发watcherzooKeeper.exists("/product",watcher);//使用getData()方法注册// 监听器:在ZooKeeper中获取/product这个节点的数据,并注册一个监听器来监控这个节点的状态。//getData()方法会读取/product这个节点的数据,同时注册一个监听器watcher。//当/product这个节点的数据发生变化时,ZooKeeper会触发watcher。//zooKeeper.getData("/product",watcher,null);//使用getChildren()方法注册监听器//在ZooKeeper中获取/product这个节点的子节点列表,并注册一个监听器来监控这个节点的子节点列表,//并注册一个监听器来监控这个节点的子节点列表的变化。//getChildren()方法会读取/product这个节点的子节点列表,同时注册一个监听器watcher.//当/product这个节点的子节点列表发生变化时(例如,有子节点被添加或删除),ZooKeeper会触发watcher.//watcher是一个实现了Watcher接口的对象,它定义了如何响应ZooKeeper的通知。//当/product这个节点的子节点列表发生变化时,ZooKeeper会调用watcher的process()方法。//zooKeeper.getChildren("/product",watcher);//让主线程等待,方便观察监听器的触发情况Thread.sleep(Long.MAX_VALUE);}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k-均值聚类

K均值聚类(K-means clustering)是一种常用的无监督学习方法,用于将一组数据点划分为K个簇(cluster)。 它的目标是将相似的数据点归到同一个簇中,同时使得不同簇之间的数据点尽可能不相似。K均值聚类算法的…

数据库MySQL的初级基础操作

文章目录 1. 介绍2. 数据库相关概念3. 启动4. 数据模型5. SQL6. DDL数据库DDL-表操作DDL-表操作-数据类型DDL-表操作-修改DDL-表操作-删除 7. 图形化界面工具DataGrip8. DML(数据操作语言)DML-添加数据DML-修改数据 9. DQL(数据查询语言)基本查询条件查询…

第十五届蓝桥杯省赛第二场C/C++B组F题【狡兔k窟】题解(AC)

题意分析 有一个 n n n 个点, n − 1 n-1 n−1 条边的无向图,边权均为 1 1 1。 每个点隶属于一个集合,同一个集合的点可以互相传送。 给定 m m m 个询问,求 x , y x, y x,y 的最短距离。 最短路解法 步骤: 建…

N5245B PNA-X 微波网络分析仪

N5245B PNA-X 微波网络分析仪 " 900 Hz/10 MHz 至 50 GHz " N5245B PNA-X 微波网络分析仪,900 Hz/10 MHz 至 50 GHz,2 端口和 4 端口,多达三个信号源。 特点 实现卓越性能 这款 PNA-X 分析仪不仅仅是一款矢量网络分析仪&a…

《QT实用小工具·四十》显示帧率的控件

1、概述 源码放在文章末尾 该项目实现了可以显示帧率的控件&#xff0c;项目demo演示如下所示&#xff1a; 、 项目部分代码如下所示&#xff1a; #ifndef FPSITEM_H #define FPSITEM_H#include <QQuickItem>class FpsItem : public QQuickItem {Q_OBJECTQ_PROPERTY(i…

ubuntu20 解决网线不能联网 RTL8111/8168/8411

这种问题一般是驱动没有正确安装。 ----RTL8111/8168/8411是一块比较坑的网卡。 1、 查看网卡信息 lspci |grep Ethernet2、 对于高版本的Ubuntu&#xff0c;能直接使用命令安装驱动。下面的r8168-dkms需根据网卡信息修改&#xff0c;上面的网卡信息还有8111&#xff0c;但逐个…

CUDA的应用场景

CUDA的应用场景随着技术的发展不断扩展&#xff0c;其核心优势在于能够显著提高并行计算任务的处理速度&#xff0c;这对于任何需要处理大量数据和执行复杂计算的领域都是极其有价值的。CUDA开发的应用场景非常广泛&#xff0c;主要得益于其强大的并行计算能力&#xff0c;以下…

buuctf——[CISCN2019 华北赛区 Day2 Web1]Hack World

buuctf——[CISCN2019 华北赛区 Day2 Web1]Hack World 1.根据提示&#xff0c;说明flag在表里 2.那就猜测存在sql注入&#xff0c;反手测试一波id1 3.尝试使用1--进行注释 4.直接丢进salmap里吧&#xff0c;不出意外多半是跑不出来 5.直接放入fuzz里进行测试 6.发现当我…

iOS - 多线程-GCD

文章目录 iOS - 多线程-GCD1. 常见多线程方案2. GCD2.1 GCD的常见函数GCD中有2个用来执行任务的函数 2.2 GCD的队列2.2.1 GCD的队列可以分为2大类型 2.3 容易混淆的术语2.4.1 有4个术语比较容易混淆&#xff1a;同步、异步、并发、串行 2.4 各种队列的执行效果 3. 死锁3.1 死锁…

Composer初次接触

php一直都是简单处理一下单片机的后台服务&#xff0c;没什么深入研究 今天安装一个 php composer.phar require qiniu/php-sdkComposer完全不懂&#xff0c;照着一试&#xff0c;就报错了 - topthink/think-installer v1.0.12 requires composer-plugin-api ^1.0 -> found…

ThreeJs模拟工厂生产过程三

上节课绘制了车间模型&#xff0c;但是车间里只有一条产线&#xff0c;这节把产线多铺设几条&#xff0c;放满整个车间&#xff0c;但是随着放满车间吗&#xff0c;也就意味着要创建更多的模型&#xff0c;而更多的模型会导致浏览器卡顿&#xff0c;所以这个节讲如何做模型合并…

Python | Leetcode Python题解之第48题旋转图像

题目&#xff1a; 题解&#xff1a; class Solution:def rotate(self, matrix: List[List[int]]) -> None:n len(matrix)# 水平翻转for i in range(n // 2):for j in range(n):matrix[i][j], matrix[n - i - 1][j] matrix[n - i - 1][j], matrix[i][j]# 主对角线翻转for …

Python400集 视频教程,手把手带你零基础手写神经网络!!

嗨喽&#xff0c;大家好&#xff0c;今天又要给大家整一波福利了&#xff01; 学习编程&#xff0c;最忌讳就是今天一个教程&#xff0c;明天一个教程&#xff0c;频繁更换教程&#xff0c;增加自己的学习成本&#xff0c;对于新手小白会是一件严重打击自信心的事情。所以今天…

四川尚熠电子商务有限公司抖音电商新势力的崛起

在当下这个数字化高速发展的时代&#xff0c;电子商务已经成为推动经济增长的重要引擎之一。四川尚熠电子商务有限公司&#xff0c;作为一股新兴的电商力量&#xff0c;专注于抖音电商服务&#xff0c;凭借其独特的市场洞察力和创新精神&#xff0c;正逐步在激烈的市场竞争中崭…

portaudio 怎么调用获取输出流

PortAudio是一个跨平台的音频I/O库&#xff0c;它允许你访问计算机的音频硬件进行录音和播放。要使用PortAudio获取输出流&#xff08;播放流&#xff09;&#xff0c;你需要遵循以下步骤&#xff1a; 官方下载地址&#xff1a;PortAudio - an Open-Source Cross-Platform Audi…

Linux 系统IO函数之open函数

open函数 要点&#xff1a; int open(const char *pathname, int flags); perror函数 close函数 控制台输入&#xff1a; man 2 open2 表示第二章&#xff08;Linux系统IO函数位于第二章&#xff09;&#xff0c;第三章是标准C库的一些函数部分输出&#xff1a; 1、open函数返…

【ruoyi-vue】axios的封装理解和基本使用

axios的配置 ruoyi的前端对axios进行了封装&#xff0c;让我们发get请求或者是post请求更加方便了。 ruoyi对axios的封装在下面文件中&#xff1a;打开文件&#xff0c;可以看到它有三个显眼的方法&#xff0c;分别是request拦截器、response拦截器和通用下载方法。ruoYi接口地…

RK3588构建ubuntu22.04根文件系统

前言 RK系列的平台提供了buildroot和debian的系统&#xff0c;使用脚本可以直接构建出来&#xff0c;但是没有提供ubuntu的系统&#xff0c;很多厂商只提供一个rootfs.img的固件包&#xff0c;没有将方法开源出来。本文实现了从ubuntu官网开始构建一个ubuntu22.04根文件系统。…

【信息收集】端口扫描masscan负载均衡识别lbd

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、什么是masscan masscan在kali系统上是自带的端口扫描…

用Redis实现获取验证码,外加安全策略

安全策略 一小时内只能获取三次&#xff0c;一天内只能获取五次 Redis存储结构 代码展示 import cn.hutool.core.util.RandomUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Test; import org.spri…