zk中怎么通过监听读取配置信息
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这期内容当中小编将会给大家带来有关zk中怎么通过监听读取配置信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。import com.alibaba.fastjson
千家信息网最后更新 2025年02月04日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 ConcurrentMapoldConfig = 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安全错误
数据库的锁怎样保障安全
云南定制软件开发外包
长岛直播软件开发企业
restful服务器搭建
scala 数据库连接池
河南省网络安全行政处罚裁量标准
cam软件开发书籍
我叫mt 数据库
rustdesk自建服务器视频
网站源程序安全服务器端
找不到内网id服务器ip地址
微信小程序怎么跟数据库对接
网络安全与管理专转本考什么
银行和证券的网络安全
bmob的服务器地址
网络安全涉及哪些专业
c 从数据库读取二进制文件
广东佛山同创网络技术有限公司
mysql数据库服务自启动
怎样免费使用access数据库
南通营销网络技术收费标准
北京订制软件开发方案
法人注册政务网数据库归类异常
江苏云天网络安全有限公司
上海移动城管软件开发系统
利用网络技术对员工进行监管
普法课堂网络安全法
东西湖国家网络安全
mysql数据库服务自启动
祖源信息数据库作用
南通营销网络技术收费标准