上一篇学习了spring cloud config的基本使用,但发现有个问题,就是每次更改配置后,都需要重启服务才能更新配置,这样肯定是不行的。在上网查资料了解后,spring cloud支持通过AMQP来实现配置的实时更新。

一、安装rabbitmq

1.1

如果要使用spring cloud的amqp,需要安装rabbitmq。我们可以通过官网 https://www.rabbitmq.com/download.html 下载。我用的是mac,下载解压后,执行$RABBITMQ_HOME/sbin/rabbitmq-server来启动rabbitmq。

rabbitmq的默认用户和密码都是guest,而默认端口是5672

其他rabbitmq相关的这里就不多说了。

二、改造config-server和client-a

2.1

在config-server和client-a两个模块下的pom文件添加

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

这里说明下spring-boot-starter-actuator是spring-boot自带的监控模块,我们要使用spring-cloud-starter-bus-amqp的话,也必须加上。

2.2

修改client-a模块的配置文件,主要是加上rabbitmq的配置,修改后如下,而config-server的配置文件不用修改

server:
port: 8910 eureka:
client:
serviceUrl:
defaultZone: http://localhost:8010/eureka/ spring:
application:
name: client-a
cloud:
config:
discovery:
enabled: true #开启通过服务来访问Config Server的功能
service-id: config-server
profile: dev
label: master rabbitmq:
host: localhost
port: 5672
username: guest
password: guest

2.3

注意,要达到配置自动更新,这里需要修改client-a的TestController,添加@RefreshScope注解

@RestController
@RefreshScope
public class TestController {
...
}

2.4

重启config-server和client-a

可以注意下启动日志,其中应该有一段是

o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/bus/refresh],methods=[POST]}"

这就是触发配置刷新的方式。

打开http://localhost:8910/getProperties 应该看到配置还是旧的配置

修改git上的配置文件

以post形式访问配置中心的http://localhost:8030/bus/refresh 来触发配置更新,看本地的日志,config-server和client-a都会有刷新配置的日志打印

再打开http://localhost:8910/getProperties 应该可以看到配置已经更新了

2.5

现在虽然可以不用重启服务就更新配置了,但还是需要我们手动操作,这样还是不可取的。

所以,这里就要用到git的webhooks来达到自动更新配置。

打开git上配置仓库的地址,添加webhooks

上面的Payload URL就填写我们的配置中心触发刷新的地址,当然这里不能写localhost啦,要外网访问地址才行。

还有这里面有个Secret的秘钥验证,如果这里填写的话,在配置文件上要写上encrypt.key与之对应。

最新文章

  1. php常用函数
  2. excel日期格式转换为文本格式
  3. AIX修改用户密码登录不成功案例分享
  4. Javascript 中的闭包和引用
  5. 个人总结ANDROID开发事项
  6. WordPress Xhanch - My Twitter插件跨站请求伪造漏洞(CVE-2013-3253)
  7. Cows(poj 2481 树状数组)
  8. HFile文件解析异常解决
  9. WPF自定义Window样式(2)
  10. vim配置文件(本人喜欢的风格)
  11. html的meta标签
  12. mac os x下Dreamweaver如何还原初始配置
  13. 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)
  14. Vue中Vuex的详解与使用(简洁易懂的入门小实例)
  15. JS 的execCommand 方法 做的一个简单富文本
  16. python基础学习4----元组
  17. SpringBoot(十一)-- 动态数据源
  18. python寻找list中最大值、最小值并返回其所在位置
  19. 使用git在gitlab上拉取代码的方法
  20. kylin加载hive表错误:ERROR [http-bio-7070-exec-10] controller.TableController:189 : org/apache/hadoop/hive/conf/HiveConf java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf 解决办法

热门文章

  1. 【Linux】开机自动启动脚本
  2. spring学习 十一 AspectJ-based的通知入门 不带参数的通知
  3. 爬取微博的数据时别人用的是FM.view方法传递html标签那么jsoup怎么解析呢
  4. Codeforces 1093 简要题解
  5. 2018.11.24 poj1743Musical Theme(二分答案+后缀数组)
  6. boost--ref
  7. 机器学习P7
  8. vue+大文件分片上传
  9. Zookeeper C++编程实战之配置更新
  10. javascript的Mixins