当config客户端启动时,会从server端获取一次配置,而后我们更新server端托管的配置之后客户端并不能获取到最新的配置,所以需要我们进行一定的处理
主动刷新
-
重启,重启客户端,客户端启动时会再次重新加载配置
ps:此方法并不可取,生产环境往往不能随便重启 -
调用客户端的
refresh
方法
1、客户端pom.xml
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2、关闭client内部端口的身份认证
management.security.enabled=false
3、向当前客户端(http://xxx/refresh)
发起post请求
此种方案适用性有限,当服务为集群部署或复杂架构下就不太适用了,下面介绍一种更优的方案
Bus消息总线推送刷新
这里消息中间件使用的是
kafka
,rabbitmq
集成方法与之类似,这里就不再一一描述
1、安装kafka
和zookeeper
,kafka
依赖于zookeeper
,kafka
新版本的内置了zookeeper
,这里使用的是kafka2.11-1.1.1
版本,最后一个支持java7
的版本
2、config
服务及customer
增加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<!--当前版本spring cloud默认引用的无法启动,需要重新引用-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>1.0.3.RELEASE</version>
</dependency>
3、增加相关配置
management.security.enabled=false
spring.cloud.stream.kafka.binder.brokers=localhost:9092
spring.cloud.stream.kafka.binder.zk-nodes=localhost:2181
4、向当前config
服务端(http://xxx/bus/refresh)
发起post请求
网友评论