SpringBoot集成Curator实现Watch事件监听

系列文章目录


文章目录

  • 系列文章目录
  • 前言


前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
在这里插入图片描述


Zookeeper是一个Apache开源的分布式的应用,为系统架构提供协调服务。从设计模式角度来审视:该组件是一个基于观察者模式设计的框架,负责存储和管理数据,接受观察者的注册,一旦数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
在这里插入图片描述
zookeeper安装单机模式

http://www.javacui.com/opensource/445.html

SpringBoot集成Curator实现Zookeeper基本操作

http://www.javacui.com/tool/615.html

看到别人写时,都是使用NodeCache和PathChildrenCache和TreeCache,实际使用时发现这三个类都是已经不再推荐使用,而是推荐CuratorCache

package com.example.springboot;import com.alibaba.fastjson.JSON;
import com.example.springboot.tool.ZkConfiguration;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.cache.*;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;/*** @Auther: Java小强* @Date: 2022/2/4 - 19:33* @Decsription: com.example.springboot* @Version: 1.0*/
@SpringBootTest(classes = Application.class)
public class CuratorTest {@Autowiredprivate ZkConfiguration zk;// 单节点监听@Testvoid nodeCache() throws Exception {CuratorFramework client = zk.curatorFramework();// 老版本是NodeCache和PathChildrenCache和TreeCache,新版CuratorCache是本节点和所有子节点CuratorCache nodecache = CuratorCache.build(client, "/javacui");// 启动时会把节点变化历史都传递过来nodecache.listenable().addListener(new CuratorCacheListener() {@Overridepublic void event(Type type, ChildData oldData, ChildData data) {System.out.println("节点发生变化");System.out.println(JSON.toJSONString(type));System.out.println(JSON.toJSONString(oldData));System.out.println(JSON.toJSONString(data));// "NODE_CHANGED"//{"data":"SmF2YeWwj+W8uuWNmuWuog==","path":"/javacui/p1","stat":{"aversion":0,"ctime":1643987130120,// "cversion":0,"czxid":63,"dataLength":16,"ephemeralOwner":0,"mtime":1643987143427,"mzxid":64,// "numChildren":0,"pzxid":63,"version":1}}//{"data":"SmF2YeW0lOeahOWNmuWuog==","path":"/javacui/p1","stat":{"aversion":0,"ctime":1643987130120,// "cversion":0,"czxid":63,"dataLength":16,"ephemeralOwner":0,"mtime":1643987265528,"mzxid":66,// "numChildren":0,"pzxid":63,"version":2}}}});nodecache.start();while (true) {// 模拟服务不关闭}}
}

这样,本节点,子节点,所有节点的监听,都集成到了一个里面进行实现。

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

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

相关文章

缓存不经常更新的动态信息:策略与 Nginx 配置指南

在处理不经常更新的动态信息时,合理配置缓存能够显著提高网站的性能和用户体验。通过缓存这类内容,我们可以减少对后端服务的请求压力,加快内容的加载速度。下面我们会探讨如何在 Nginx 中配置缓存以最大化这种类型的动态内容的效益。 理解动…

kotlin基础知识

val(value的简写)用来声明一个不可变的变量。(只读变量) var(variable的简写)用来声明一个可变的变量。(可读写变量) 在变量声明中指定数据类型时,应在冒号后面添加一个空格。 先声明变量在声明变量的类型。 val a :Int 10 kotlin拥有类型推导机制&…

有哪些可以用电脑做的挣钱副业,有电脑就行

以下是一些可以用电脑做的挣钱副业 1. 写作和翻译 可以在各大网络平台上接单进行写作或者翻译。 2. 做任务 还在做致米宝库这个软件,软件每天会发布一些项目任务,也能学到一些网上赚钱的知识技术,我平时就做些简单任务和一个虚拟项目。 任…

下载npm I就包错解决方案

npm i xxxx -S --legacy-peer-deps 如果包错就执行以上命令

杨校老师项目之基于大数据技术栈hadoop商业web应用的日志分析系统

获取全套资料: 有偿获取:mryang511688 摘要: 互联网世界的先驱者们一致认为大数据将是未来互联网产业,甚至是整个人类各个产业的基础资源,那么到底什么是大数据,大数据给我们的世界是如何带来变化的呢&am…

电子作业指导书系统如何提升医疗设备工厂的生产效率

在医疗设备工厂中,电子作业指导书(ESOP)正逐渐成为提升生产效率的关键因素。 一、电子作业指导书系统提供了即时可得的准确信息。 电子作业指导书系统与传统的纸质作业指导书相比,员工可以在工作现场通过电子设备随时查阅最新、最…

2024年5月树莓集团快讯

树莓集团近期快讯 1 园区专场招聘会进校园 国际数字影像产业园联合四川城市职业学院的专场招聘会成功召开,共计提供400余个工作岗位。 2 园区硬件优化再升级 园区硬件优化再升级,智能门禁系统及人脸识别系统下周投入使用。 3 基地短剧合作交流 天府…

Apple store 静安·苹果店欣赏

官网: https://www.apple.com/today/Apple 亚洲第一大商店:Apple 静安零售店现已在上海开幕 静安苹果欣赏

CMainFrame中的OnCreatClient()函数

在MFC(Microsoft Foundation Classes)框架中,OnCreateClient()函数是CFrameWnd类(以及继承自它的类,如CMainFrame)的一个虚拟成员函数。这个函数被设计来响应窗口客户区的创建过程,即在主框架窗…

Verilog中信号发生器的代码实现

目录 描述 输入描述: 输出描述: 描述 题目描述: 请编写一个信号发生器模块,根据波形选择信号wave_choise发出相应的波形:wave_choice0时,发出方波信号;wave_choice1时,发出锯齿…

完整的在Python中自定义异常的例子

下面是一个在Python中自定义异常的完整示例,包括定义异常、引发异常和捕获异常的过程: ### 定义自定义异常 首先,我们定义两个自定义异常类:ShapeError作为基类,用于所有形状相关错误的基类;InvalidShape…

网页版五子棋的自动化测试

目录 前言 一、主要技术 二、测试环境的准备部署 三、测试用例 四、执行测试 4.1、公共类设计 创建浏览器驱动对象 测试套件 释放驱动类 4.2、功能测试 登录页面 注册页面 游戏大厅页面 游戏房间页面 测试套件结果 4.3、界面测试 登录页面 注册页面 游戏大…

MoonBit 本周有重磅更新!枚举构造器支持可变字段、数组字面量默认构建 Vector

MoonBit更新 支持了构造器的 payload 中出现 mutable field,使用方式如下: enum E {C(mut ~x : Int, mut ~y : Int) } derive(Debug)fn swap_xy(x : E) -> Unit {match x {// ~y 会绑定模式匹配前 C 中的 y 字段的值// 当看到 C(..) as c 这种模式时…

visual sudio使用-创建空项目-创建cpp文件

新建空项目 新建cpp文件 #include <iostream> using namespace std;int main() {cout << "hello vs" << endl;cout << "hello c" << "\n";cout << "hello first day\n"; }

LeetCode416:分割等和子集

题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 解题思想 [1,5,11,5] 和为22&#xff0c;其中一半为 11。如果能寻找到若干数的和为11则成立可以抽象为一个0-1背包问题&#xff1a;容…

MATLAB绘制蒸汽压力和温度曲线

蒸汽压力与温度之间的具体关系公式一般采用安托因方程&#xff08;Antoine Equation&#xff09;&#xff0c;用于描述纯物质的蒸汽压与温度之间的关系。安托因方程的一般形式如下&#xff1a; [\log_{10} P A - \frac{B}{C T}] 其中&#xff0c; (P) 是蒸汽压&#xff08…

redis 和 memcache 有什么区别?

Redis和Memcache都是常用的内存数据存储系统&#xff0c;但它们之间存在一些显著的区别。以下是它们之间的一些主要差异&#xff1a; 数据支持类型&#xff1a; Memcache&#xff1a;基本只支持简单的key-value存储&#xff0c;不支持枚举&#xff0c;不支持持久化和复制等功能…

【刷题】一篇文章搞定“位运算”

只要春天不死&#xff0c;就有迎春的花朵年年岁岁开放&#xff0c;生命讲涅槃&#xff0c;生生不息&#xff0c;并会以另一种形式永存。 – 路遥 《平凡的世界》 (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥ (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥…

提Pr教程

提Pr教程 以提交到GitLab的kwin为例 打开kwin的仓库地址&#xff1a;invent.kde.org/plasma/kwin&#xff0c;注册自己的账号 fork一份仓库到自己名下 将fork的仓库克隆到本地&#xff0c;在其上做出修改并commit 需要本地先新建一个开发分支&#xff0c;并将这个开发分支关联…

NL6621 WIFI模块烧录及其他

某宝淘得NL6621: 测了一下引脚&#xff1a; 做了以下功课&#xff1a; 新岸线物联网NL6621解决方案是高性价比、完全开源、高成熟度的解决方案&#xff0c;特别为高数据吞吐率低成本的无线局域网产品而设计。它集成了MCU&#xff0c; MAC&#xff0c;1T1R基带和带功放RF收发机于…