SpringCloud學習筆記-自動刷新配置-SpringCloud-Bus(消息總線)
如果修改配置后,config-server通知order修改配置。
消息隊列(RabbitMQ)
Bus 用來操作消息隊列。
第一步添加依賴(config-server)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
spring-cloud-starter-bus-kafka 這是kafka的依賴,上面的是RabbitMq的依賴
說明:https://blog.csdn.net/jack281706/article/details/73742522
第二步添加配置(config-server)
management:
endpoints:
web:
exposure:
include: bus-refresh #include: "*" #這個也可以
需要注意的是 springboot2.0于1.5的配置不一樣。
我之前的配置是這樣的,訪問 http://localhost:8066/actuator/bus-refresh 但是實現不了自動刷新,修改為上面的就可以了
management:
endpoints:
web:
exposure:
exclude: "*"
說明:https://ask.csdn.net/questions/684123
第三步下載安裝RabbitMQ
(自己下載安裝,需要下載erlang 語言包配置環境變量)
安裝鏈接:http://blog.csdn.net/hzw19920329/article/details/53156015
第四步給eureka-client服務(order)添加依賴
<!--bus 自動刷新配置-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
第五步給需要獲取配置的文件上加注解
@RefreshScope
@Configuration
@ConfigurationProperties("XXXXX")
package com.hx.order.controller;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/env")
@RefreshScope
public class EnvController {
@org.springframework.beans.factory.annotation.Value("${env}")
private String env;
@GetMapping("/print")
public String print(){
return env;
}
}
重啟congfig-server 與 order 服務。
在git上面修改配置文件。訪問http://localhost:8066/actuator/bus-refresh
就可以重新刷新配置文件。
可以在github上班的WebHooks 上面配置 http://外網地址/actuator/bus-refresh
Content-Type:application/json
但是碼云上面配置WebHooks 就會發生錯誤:
Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
at [Source: (PushbackInputStream); line: 1, column: 366] (through reference chain: java.util.LinkedHashMap["commits"])]
因為它不能配置Content-Type:application/json。
但是我改成自己的gitlab的時候重啟config-server和order服務的時候出現下面錯誤。
unable to find valid certification path to requested target
解決方案:https://blog.csdn.net/qq_40680190/article/details/90106933
就這樣就解決的報錯的問題,因為在gitLab上面沒有找到WebHooks,也就沒有配置。它也實現了自動刷新配置。
智能推薦
Springcloud筆記——Bus消息總線
概述 根據Spring Cloud Config配置中心,當我們更改了GitHub上面的配置文件后,若想要獲取到最新的配置,需要手動刷新或者利用webhook的機制每次提交代碼發送請求來刷新客戶端,客戶端越來越多的時候,需要每個客戶端都執行一遍,這種方案很不好。使用Spring Cloud Bus(消息總線)可以解決這一問題 1、Bus是什么? Spring Cloud Bus 配合 Spring...
十七、SpringCloud學習筆記之Bus 消息總線
SpringCloud Bus 消息總線 概述 是什么 Spring Cloud Bus 配合 Spring Cloud Config 使用可以實現配置的動態刷新。 Spring Cloud Bus 是來將分布式系統的節點與輕量級消息系統鏈接起來的框架,它整合了Java的事件處理機制和消息中間件的功能 Spring Cloud Bus 目前支持RabbitMQ和Kafka 能干嘛 Spring C...
17.SpringCloud學習筆記--Bus消息總線
Bus消息總線簡介 Spring Cloud Bus 配合 Spring Cloud Config 使用可以實現配置的動態刷新。 Spring Cloud Bus是用來將分布式系統的節點與輕量級消息系統鏈接起來的框架,它整合了Java的事件處理機制和消息中間件的功能。Spring Clud Bus目前支持RabbitMQ和Kafka。 Spring Cloud Bus能管理和傳播分布式系統間的消息...
SpringCloud學習筆記【十三】Spring Cloud Bus消息總線
文章目錄 本片要點 Spring Cloud Bus簡介 概述 什么是總線 基本原理 Docker安裝RabbitMQ 演示動態刷新全局廣播前置準備 新建模塊,引入依賴 配置bootstrap.yml 編寫主啟動類 編寫接口 設計思想 開始演示動態刷新全局廣播 為三個模塊都添加消息總線支持 為三個模塊配置yml 為ConfigServer配置yml 為ConfigClient配置yml 測試 原理...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...