zk中怎么通过监听读取配置信息
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这期内容当中小编将会给大家带来有关zk中怎么通过监听读取配置信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。import com.alibaba.fastjson
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
手磨咖啡
互联网科技网
关于新基建和互联网科技
互联网 科技公司
亿策互联网科技
广州凡科互联网科技
万达互联网科技
狮子座互联网科技培训
居家互联网科技有限公司
卓越科技互联网 招聘
互联网科技股午盘股票涨跌
科技与互联网的利与弊
互联网科技博主是什么意思
广州慧亚互联网科技怎么样
小米互联网科技园设置
昭通互联网科技选哪家
广州新华互联网科技学校电竞方面
江苏互联网智能科技软件
互联网科技新闻
互联网科技博主张洲
平安科技 互联网
富国互联网科技创新基金
湖南诚度互联网科技有限公司
受益于互联网科技的高速发展
华夏恒生互联网科技013171
南通创西澳互联网科技有限公司
伍佰万互联网科技怎么赚钱
互联网科技包装股份有限公司上市
第三届互联网大会安防黑科技
河南商务圈互联网科技有限公司