1. 程式人生 > >spring cloud config 動態重新整理配置 /bus/refresh 404 not found

spring cloud config 動態重新整理配置 /bus/refresh 404 not found

上一篇學習了spring cloud config的基本使用,但發現有個問題,就是每次更改配置後,都需要重啟服務才能更新配置,這樣肯定是不行的。在上網查資料瞭解後,spring cloud支援通過AMQP來實現配置的實時更新。

一,安裝的的RabbitMQ

安裝RabbitMQ

二,改造配置伺服器和客戶端,一

2.1
在配置伺服器和客戶端一兩個模組下的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>

這裡說明下彈簧引導起動致動器是彈簧啟動自帶的監控模組,我們要使用彈簧雲起動匯流排AMQP的話,也必須加上。

2.2
修改客戶端-一個模組的配置檔案,主要是加上的RabbitMQ的的配置,修改後如下,而配置伺服器的配置檔案不用修改

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
注意,要達到配置自動更新,這裡需要修改客戶端-一個的的的TestController,新增@RefreshScope註解

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

2.4
重啟配置伺服器和客戶端,一

可以注意下啟動日誌,其中應該有
一段是osbaemvc.EndpointHandlerMapping:對映“{[/ bus / refresh],methods = [POST]}”
這就是觸發配置重新整理的方式。

開啟http:// localhost:8910 / getProperties應該看到配置還是舊的配置

修改混帳上的配置檔案

以post形式訪問配置中心的http:// localhost:8030 / bus / refresh來觸發配置更新,看本地的日誌,config-server和client-a都會有重新整理配置的日誌列印

再開啟http:// localhost:8910 / getProperties應該可以看到配置已經更新了

2.5
現在雖然可以不用重啟服務就更新配置了,但還是需要我們手動操作,這樣還是不可取的。
所以,這裡就要用到GIT中的網路掛接來達到自動更新配置

開啟混帳上配置倉庫的地址,新增網路掛接

上面的Payload URL就填寫我們的配置中心觸發重新整理的地址,當然這裡不能寫localhost啦,要外網訪問地址才行。

還有這裡面有個祕密的祕鑰驗證,如果這裡填寫的話,在配置檔案上要寫上encrypt.key與之對應。

報錯
spring cloud配置伺服器/匯流排/重新整理404未找到

解決方案
Spring boot 2.0的改動較大,/ bus / refresh全部整合到執行器裡面了,變成了/ actuator / bus-refresh,所以之前1.x的management.security.enabled全部失效,不適用於2.0 
2.0的效能配置是這樣的:

管理:
  端點:
    web:
      exposure:
        include:“*”另外

在config-client應用程式註解

@RefreshScope


然後再通常查詢日誌可發現有該[/ actuator / bus-refresh],methods = [POST]日誌,通過訪問使用curl即可重新整理config-server從遠端Git拉取修改後的配置:

curl -v -X POST“http:// localhost:8888 / actuator / bus-refresh”