當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請求