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

版本
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. Jconsole或者VisualVM监控远程主机(阿里云,jdk11或者8)

    准备: 1 一个war包或者jar包,这里我用springboot的 2 linux环境,安装tomcat,jdk,我用的jdk11和tomcat9,jdk11和8的拷贝权限文件路径有点不一样,这个需 ...

  2. Go语言项目中使用zap日志库(翻译)

    本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档. 在Go语言项目中使用Uber-go的Zap L ...

  3. ELK搭建(docker环境)

    ELK是Elasticsearch.Logstash.Kibana的简称,这三者是核心套件,但并非全部. Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大功能:是一套开 ...

  4. c++ 中数组的引用

    在C++里,数组也是可以引用的. 代码如下: char str1[] = "abcde"; ] = str1; 解读第二句代码,括号的优先级最高,'str2'首先与'&'相 ...

  5. Software Testing Concepts

    Software Testing Concepts

  6. malloc返回地址的对齐问题

    http://man7.org/linux/man-pages/man3/malloc.3.html RETURN VALUE         top The malloc() and calloc( ...

  7. tomcat增加内存 JVM内存调优

    tomcat总是卡死,查看日志catalina.out 发现疯狂报错 如下,提示内存溢出 java.lang.OutOfMemoryError: Java heap space 此外常见的内存溢出有以 ...

  8. comm diff 文件对比

    comm: 利用comm命令进行处理的文件必须首先通过sort命令进行排序处理并且是unix格式而非dos格式的文本文件 功能说明:比较两个已排过序的文件.(使用sort排序)语 法:comm [-1 ...

  9. Centos7 LVM扩容实例

    Centos7 lvm 扩容与以往版本有所不同   1.插入硬盘,我是在虚拟机上做的测试  直接添加一块5G的硬盘   2.系统读取硬盘信息     # echo "- - -" ...

  10. Vim 安装和配置、优化

    Vim 介绍 Vim 官网:http://www.vim.org/ Vim 安装 CentOS:sudo yum install -y vim Ubuntu:sudo apt-get install ...