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;但逐个…

PostgreSQL 排查链接锁问题常用SQL语句

目录 1. 背景 2. 常用SQL语句 2.1. 查询PostgreSQL设置的最大连接数 2.2. 查询当前使用中的连接数 2.3. 查询当前所有连接数据库用户和用户其连接数 2.4. 查询是否存在锁表记录 2.5. 查询详细的锁信息 2.6. 如何解锁&#xff1f; 2.6.1. 定位并终止阻赛的事务 2.6.1.…

某企业征信Oracle数据库跑批耗时较长问题简述分析报告

1. 分析及解决方案概述 分析原因 由于对跑批涉及的表在周末6点前进行了清数&#xff0c;Oracle周末自动收集统计信息的时间为早上6点&#xff0c;此时的表内数据量为0&#xff0c;导致对该表的执行计划发生了变化。因此在下午跑批过程中走的错误的执行计划&#xff0c;导致数…

HarmonyOS —— 仿 XPermission 鸿蒙权限申请工具类

仿 XPermission 写一个简单的鸿蒙权限申请工具类。 import { abilityAccessCtrl, bundleManager, Context, Permissions } from kit.AbilityKit import { ArrayList } from kit.ArkTSexport class PermissionUtil {private static readonly sUtil: PermissionUtil new Permis…

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;所以这个节讲如何做模型合并…

linux 下如何确定驱动是否已经正常加载了

1.系统日志 嵌入式系统&#xff0c;使用dmesg 指令&#xff0c;如&#xff1a; # dmesg | grep usb [ 0.253890] usbcore: registered new interface driver usbfs [ 0.253951] usbcore: registered new interface driver hub [ 0.254026] usbcore: registered new …

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;对于新手小白会是一件严重打击自信心的事情。所以今天…

【嵌入式经验积累】锂电池与充电

文章目录 警告锂电池的基本参数锂电池的材料锂电池的充电阶段预充电恒流充电恒压充电复充电锂电池的充电温度范围锂电池的放电温度范围锂电池充电芯片警告 以下警告是由国内一家锂电池厂商告知的: 锂电池只有过充和过热才会爆炸(非外力)。所以一定要保证锂电池在充电过程中不…

Jmeter实现参数化的四种方法

目录 一、CSV Data Set Config/CSV数据文件设置 二、函数助手 1、Random函数 2、RandomString随机字符串 3、CSVRead 4、time 5、UUID 三、计数器&#xff08;Counter&#xff09; 参数化&#xff1a;自动化测试脚本的一种常用技巧&#xff0c;事先准备好数据&#xff…

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

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