正常搭建配置中心,网上教程多,这里不讨论,只记坑也是为了后来者少花时间在这里,由于是
当时研究了好久才写的文章,所以只能提供问题的原因,当然会给出印证的思路,闲话不多说进入正题!

版本
spring boot2.1.6
spring boot admin 2.1.6
spring cloud GreenWich.SR1

启动时可以看见配置服务端加载了一些配置文件,如:Adding XXX,启动客户端时,发现有fetching XXX,并且使用/actuator/refresh可以刷新客户端,当然要刷新的配置需要使用@RefreshScope注解标注,实现了以上操作基本上已经搭建成功了.
在不使用spring boot admin(简称:SBA)接入服务时,实现动态刷新配置应该问题不大

接下来说重点
    1.刷新的配置需要使用@RefreshScope注解
    2.使用github或者gitee的Webhooks回调刷新接口时,会出现Json解析异常,这个是因为git里给的那些参数,转的Json不规范,解决方法是使用一个过滤器或者一个转发器,请求体给干掉就行了

正常搭建后如果出现了下面两种情况,就是我掉的坑了,希望下面的分析对你们有用
    第一种情况: config的服务端不接入SBA,config的客户端接入SBA,访问/actuator/bus-refresh接口可以通过日志发现配置的服务端可以接收到更新配置的消息,但是发现配置的客户端不会更新日志.
    原因:配置客户端是需要通过配置中心刷新配置事件的监听去实现配置的刷新,但是SBA的接入破坏了时间的监听.有兴趣的可以通过在DispatchServlet这里端点跟进下源码,这里最终会进入到bus包进行处理,这一步说明配置端是没有任何问题的.
    第二种情况: config的服务端和客户端都接入SBA,有趣的事情发生了,这时config服务端不会接收到任何消息,甚至可能会出现Method Not Support的异常,当然正常的现象应该是可以正常访问,会响应一个Json串,这个Json串具体的我忘了,这个响应与我们请求配置文件的信息类似.查看rabbitMQ会发现没有接收到任何的消息.
    原因:因为不知道被谁解析了,所以只能通过DispatchServlet去看看到底是谁搞的,一根进,了不得,这个请求并不是给Bus解析的,而是被当成/{name}/{profile}.[正则表达式]解析的,具体在哪个包下我忘了,没记错的话应该是spring cloud config的包下解析的.

总的来说,就是SBA的问题,当时找了很久才看到有一个网站上敢说这个是spring留下的一个Bug,我也不知道是不是,但是我就是遇上了
接下来说说解决方法
    1.有实力的可以修改源码,毕竟知道原因了
    2.使用第三方配置中心,如:Apollo,Disconf,还有Nacos,需不需要使用第三方看自己项目的需求
    3.使用其他版本,这个慎重吧,因为版本的修改有时会让你崩溃,当然如果修改版本对你项目影响不大的话,还是建议修改版本,这里给出自己测过没问题的版本SpringBoot-Admin2.0.3,SpringCloud.Finchley,所以说建立项目选择的依赖要慎重,不要使用太新的版本,否则遇到问题找不到比较好的解决方法,就会拖延你项目的进度,但是对于学习来说还是不错的,有坑的地方,只要你啃下去就会收获良多。

希望这篇文章对你们有帮助,当然也有可能是我菜,只意识到这里,如果有其他原因或者是其他解决方法希望可以留言给我,毕竟啃了这么久,啃错了也要让我知道下,不然就乱指导了。

为spring cloud config实现刷新动态掉的坑的更多相关文章

  1. Spring Cloud Config 自动刷新所有节点 架构改造

    详细参考:<Sprin Cloud 与 Docker 微服务架构实战>p162-9.9.4节 要做的改动是: 1.在spring cloud config server 服务端加入 spr ...

  2. Spring Cloud Config 自动刷新所有节点

    全局刷新 详细参考:<Sprin Cloud 与 Docker 微服务架构实战>p160-9.9.2节 1.使用Spring Cloud Config 客户端时,可以使用 /refresh ...

  3. Spring Cloud Config 配置刷新

    客户端进行刷新操作. 1.添加 actuator包,这样 /refresh url才处于可用状态. <dependency> <groupId>org.springframew ...

  4. 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

    上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如 ...

  5. spring cloud config客户端

    上篇介绍了spring cloud config服务器,本篇介绍客户端.客户端主要是从config服务器获取配置信息. 代码示例 首先创建一个Maven项目,在pom.xml文件中添加依赖: < ...

  6. 通过总线机制实现自动刷新客户端配置(Consul,Spring Cloud Config,Spring Cloud Bus)

    通过总线机制实现自动刷新客户端配置 方案示意图 利用Git服务的webhook通知功能,在每次更新配置之后,Git服务器会用POST方式调用配置中心的/actuator/bus-refresh接口,配 ...

  7. Spring Cloud Config Server 节点迁移引起的问题,请格外注意这一点!

    前言: 虽然强烈推荐选择使用国内开源的配置中心,如携程开源的 Apollo 配置中心.阿里开源的 Nacos 注册&配置中心. 但实际架构选型时,根据实际项目规模.业务复杂性等因素,有的项目还 ...

  8. springboot+cloud 学习(五)统一配置中心 spring cloud config + cloud bus + WebHooks +RibbitMQ

    前言 微服务要实现集中管理微服务配置.不同环境不同配置.运行期间也可动态调整.配置修改后可以自动更新的需求,Spring Cloud Config同时满足了以上要求.Spring Cloud Conf ...

  9. Spring Cloud config之一:分布式配置中心入门介绍

    Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对Spring Environm ...

随机推荐

  1. Spring实战:第一个spring mvc项目

    我自己看的pdf书中有几个小错误导致项目一直起不来,具体错误是: 此处的名称不一致导致的,此外对于映射@RequestMapping("/"),需要删除创建框架时自带的index. ...

  2. Informatica在linux下安装搭建

    安装介质清单准备 介质名称 版本信息 描述 Informatica Powercenter 9.5.1 for Linux 64 bit 必须 Java Jdk 1.6.0_45 for Linux ...

  3. git远程上传文件至github

    一.本地安装和配置git 1.安装git pacman -S git //如果没有问题的话就可以安装成功了 2.验证 git --version //看到结果git version 2.10.2就可以 ...

  4. tmobst3an

    1.(单选题)如果数据库是oracle,则generator属性值不可以使用(). A)native B)identity C)hilo D)sequence 解析:identity:生成long, ...

  5. std::wstring_convert处理UTF8

    扔掉MultiByteToWideChar 吧,使用std::wstring_convert和 std::codecvt_utf8 来处理UTF8与WChar之间的互转. VC和Clang都支持哦~ ...

  6. [python之路]简单介绍

    python介绍 #python是一个什么样的语言?编译型和解释型静态语言和动态语言强类型定义语言和弱类型定义语言python是一门动态解释性的强类型定义语言. #Python的优缺点##优点Pyth ...

  7. Codeforces_831

    A.线性判断. #include<bits/stdc++.h> using namespace std; ] = {}; int main() { ios::sync_with_stdio ...

  8. HDU_5057_分块

    http://acm.hdu.edu.cn/showproblem.php?pid=5057 分块,保存每个块中每位对应数字的和,复杂的是getmum,左右下标所在的块不能直接读取block数组,要重 ...

  9. 推荐一个很棒的开源工作流elsa-core

    开源项目orchard主要开发人员Sipke Schoorstra 开源了一个netcore 工作流项目,地址:https://github.com/elsa-workflows/elsa-core, ...

  10. Codeforces 1017D The Wu(状态压缩+预处理)

    题意: 给你n m q,表示在这一组数据中所有的01串长度均为n,然后给你一个含有m个元素的multiset,之后有q次询问.每次询问会给你一个01串t和一个给定常数k,让你输出串t和multiset ...