zk中怎么通过监听读取配置信息
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这期内容当中小编将会给大家带来有关zk中怎么通过监听读取配置信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。import com.alibaba.fastjson
千家信息网最后更新 2025年12月02日zk中怎么通过监听读取配置信息
这期内容当中小编将会给大家带来有关zk中怎么通过监听读取配置信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
import com.alibaba.fastjson.JSON;import com.google.common.collect.Maps;import lombok.extern.slf4j.Slf4j;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooDefs;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data.Stat;import java.io.IOException;import java.util.Map;import java.util.concurrent.ConcurrentMap;import java.util.concurrent.CountDownLatch;import java.util.concurrent.atomic.AtomicInteger;@Slf4jpublic class ZkClientWatcher implements Watcher { private static final String CONNECT_ADDRESS = "10.10.136.114:2181,10.10.136.114:2182,10.10.136.114:2183"; private static final int SESSION_TIMEOUT = 2000; public static final int MAX = 3; private static String CONFIG_PATH = "/application-config"; private static ZooKeeper zk; private static CountDownLatch countDownLatch = new CountDownLatch(1); private static ConcurrentMap oldConfig = Maps.newConcurrentMap(); private static ConcurrentMap newConfig = Maps.newConcurrentMap(); private static AtomicInteger count = new AtomicInteger(1); public void createConnection(String connectAddres, int sessionTimeOut) throws InterruptedException { try { zk = new ZooKeeper(connectAddres, sessionTimeOut, this); log.info("zk connecting..."); } catch (IOException e) { e.printStackTrace(); } finally { } } public boolean createPath(String path, String data) { try { if (null == zk.exists(path, true)) { zk.create(path, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); log.info("node create success"); } } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override public void process(WatchedEvent event) { Event.KeeperState keeperState = event.getState(); Event.EventType eventType = event.getType(); String path = event.getPath(); log.info("process:{},keeperState:{},eventType:{},path:{}", keeperState, eventType, path); if (Event.KeeperState.SyncConnected == keeperState) { if (Event.EventType.None == eventType) { log.info("now status is None"); } else if (Event.EventType.NodeCreated == eventType) { log.info("now status is nodeCreated,path:{}", path); } else if (Event.EventType.NodeDataChanged == eventType) { log.info("now status is nodedataChanged:{}", path); try { newConfig = JSON.parseObject(zk.getData(path, true, new Stat()), ConcurrentMap.class); log.info("newConfig is {}", newConfig); count.getAndIncrement(); if (count.get() > MAX) { countDownLatch.countDown(); } } catch (Exception e) { log.error("get data from zk occur exception", e); } } else if (Event.EventType.NodeDeleted == eventType) { log.info("now status is node deleted:{}", path); } } } public static void main(String[] args) throws Exception { ZkClientWatcher watcher = new ZkClientWatcher(); watcher.createConnection(CONNECT_ADDRESS, SESSION_TIMEOUT); createPathAndInitData(watcher); getOldConfig(); countDownLatch.await(); log.info("test complete!config has changed 3 times"); } /** * 第一次获取配置信息 * * @throws Exception */ private static void getOldConfig() throws Exception { oldConfig = JSON.parseObject(zk.getData(CONFIG_PATH, true, new Stat()), ConcurrentMap.class); log.info("oldConfig is {}", oldConfig); } /** * 创建path设置初始值 * * @param watcher */ private static void createPathAndInitData(ZkClientWatcher watcher) { Map maps = Maps.newConcurrentMap(); maps.put("spring.data.status.start", "true"); maps.put("switch", "on"); maps.put("startTime", "2019-10-24 12:00:00"); maps.put("coder", "1024"); watcher.createPath(CONFIG_PATH, JSON.toJSONString(maps)); }} 上述就是小编为大家分享的zk中怎么通过监听读取配置信息了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
信息
配置
监听
内容
分析
专业
中小
内容丰富
就是
文章
更多
知识
第一次
篇文章
行业
角度
资讯
资讯频道
频道
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
千亿级网络安全法
智联物联串口服务器说明书
电脑关机管理服务器
网络安全手抄小报五十字
数码宝贝服务器未开放
性能最好的数据库
摇滚音乐下载软件开发
网络安全德国旗下讲话
怎么接入阿里云服务器
智海元网络技术有限公司
社会如何保障公民网络安全
郑州应用软件开发怎样收费
政法干警的服务器什么时候开始
浦东新区常规软件开发定制报价表
洛克王国服务器类型
hp服务器电源750w
创建好数据库怎么连接
CRPS服务器电源品牌
软件开发目前怎么样
深圳市掌柜网络技术
热血航线怎么选服务器
金立手机安全更新服务器
一站式网络技术开发售后服务
国家宣讲网络安全知识
肇庆电脑网络技术
江西oa管控软件开发平台
网络安全业绩最新消息
数据库管理系统工程师
软件开发工作室装修风格大全
根据sql文件创建数据库