nacos客户端有什么方法可以在网络断掉的时候自动读取本地缓存配置文件,网络恢复会自动连接线上的配置
8条回答 默认 最新
关注
不知道你这个问题是否已经解决, 如果还没有解决的话:- 这篇文章:nacos配置本地数据库报错问题 也许能够解决你的问题,你可以看下
- 除此之外, 这篇博客: 【Nacos源码之配置管理 九】客户端获取配置数据的流程中的 获取指定配置数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
Properties properties = new Properties(); properties.put("serverAddr", serverAddr); properties.put("namespace","dev"); ConfigService configService = NacosFactory.createConfigService(properties); String content = configService.getConfig(dataId, group, 5000); System.out.println(content);
配置中设置了serverAddr 和命名空间namespace
这个命名空间可以在管理后台自己新建的
获取配置的核心代码
private String getConfigInner(String tenant, String dataId, String group, long timeoutMs) throws NacosException { group = null2defaultGroup(group); ParamUtils.checkKeyParam(dataId, group); ConfigResponse cr = new ConfigResponse(); cr.setDataId(dataId); cr.setTenant(tenant); cr.setGroup(group); // 优先使用本地配置 String content = LocalConfigInfoProcessor.getFailover(agent.getName(), dataId, group, tenant); if (content != null) { LOGGER.warn("[{}] [get-config] get failover ok, dataId={}, group={}, tenant={}, config={}", agent.getName(), dataId, group, tenant, ContentUtils.truncateContent(content)); cr.setContent(content); configFilterChainManager.doFilter(null, cr); content = cr.getContent(); return content; } try { content = worker.getServerConfig(dataId, group, tenant, timeoutMs); cr.setContent(content); configFilterChainManager.doFilter(null, cr); content = cr.getContent(); return content; } catch (NacosException ioe) { if (NacosException.NO_RIGHT == ioe.getErrCode()) { throw ioe; } LOGGER.warn("[{}] [get-config] get from server error, dataId={}, group={}, tenant={}, msg={}", agent.getName(), dataId, group, tenant, ioe.toString()); } LOGGER.warn("[{}] [get-config] get snapshot ok, dataId={}, group={}, tenant={}, config={}", agent.getName(), dataId, group, tenant, ContentUtils.truncateContent(content)); content = LocalConfigInfoProcessor.getSnapshot(agent.getName(), dataId, group, tenant); cr.setContent(content); configFilterChainManager.doFilter(null, cr); content = cr.getContent(); return content; }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 burpsuite密码爆破
- ¥15 关于#ubuntu#的问题,如何解决?(相关搜索:移动硬盘)
- ¥15 scikit安装之后import不了
- ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
- ¥15 人脸识别相关算法 YOLO,AI等
- ¥15 spark问题方便加V17675797079
- ¥15 Python代码不打印的原因
- ¥20 微软SEAL库的安装和使用,VS2022环境配置问题
- ¥15 数学问题也不知道那种类型的问题
- ¥15 R作图的时候,文本框重叠了怎么办?