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

版本
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. Linux(Centos)安装tomcat并且部署Java Web项目

    步骤一.下载安装包 a.   下载tomcat linux安装包,地址:http://tomcat.apache.org/download-80.cgi , 我们下载的版本是8.0,下载方式如图: b ...

  2. 修改 VS2013 项目属性的默认包含路径(全局)

    1. 这里已不能更改. 2. 修改位置: C:\Users\N3verL4nd\AppData\Local\Microsoft\MSBuild\v4.0 Microsoft.Cpp.Win32.use ...

  3. python 类 --导入类

    导入类 1.1.导入单个类 如何导入单个类 以上一节为例,编写一个car.py程序 编写一个新程序my_car.py 希望在my.car.py文件中直接使用car.py中的函数,使用from car ...

  4. WeChall_Training: Crypto - Caesar I (Crypto, Training)

    As on most challenge sites, there are some beginner cryptos, and often you get started with the good ...

  5. Scala 学习(9)之「函数式编程」

    引用透明 对相同的输入,总是能得到相同的输出. 如果 f(x) 的参数 x 和函数体都是引用透明的,那么函数 f 是纯函数. 违反引用透明的例子 我们可以很清楚的看到,对于相同的输入,第二次调用app ...

  6. WebAPI 微信小程序的授权登录以及实现

    这个星期最开始 ,老大扔了2个任务过来,这个是其中之一.下面直接说步骤: 1.  查阅微信开发文档  https://developers.weixin.qq.com/miniprogram/dev/ ...

  7. Go语言实现:【剑指offer】构建乘积数组

    该题目来源于牛客网<剑指offer>专题. 给定一个数组A[0,1,-,n-1],请构建一个数组B[0,1,-,n-1],其中B中的元素B[i]=A[0] * A[1] * - * A[i ...

  8. Bound Method and Unbound Method - 绑定方法 与 非绑定方法

    Bound Method and Unbound Method 通常有两种方法对类的方法(instance.method)/属性(class.attribute)进行引用, 一种称做 Bound Me ...

  9. CNN卷积神经网络入门整合(科普向)

    这是一篇关于CNN入门知识的博客,基本手法是抄.删.改.查,就算是自己的一个笔记吧,以后忘了多看看.   1.边界检测示例假如你有一张如下的图像,你想让计算机搞清楚图像上有什么物体,你可以做的事情是检 ...

  10. MongoDB入门(介绍、安装)

    一.什么是MongoDB? MongoDB is a document database with the scalability and flexibility that you want with ...