Springcloud-Bus部分學習筆記
標簽: springcloud
視頻學習地址:https://www.bilibili.com/video/BV18E411x7eT
源碼地址:https://gitee.com/zhu_xinmiao/springcloud
spring cloud版本:H版
概述
Bus是什么
Bus的作用
實際上就是原先Config動態刷新中,我們人工輸入的curl刷新提醒,有中間件替我們完成了。
什么是總線
相當于我有一個微信公眾號,大家訂閱了我,我這一更新大家每個人都能收到這個更新。
如果學過消息隊列(RabbitMQ、Kafka…)的話,這就相當于消息隊列的廣播模型。
設計思想
1對應的是Bus是什么標題下的圖
相當于小道消息的廣播通知
2對應的是Bus的作用標題下的圖
相當于中央配置中心的廣播通知
技術選型時我們更應該選擇后者
實現
前期準備
這里使用的消息隊列是RabbitMQ,并且選用的是設計思想中的第二種方法。
新建3366微服務,和3355搭建過程幾乎完全相同,可參考我前一篇博文config部分學習筆記中的搭建過程。
這里唯一的區別是controller中有所不同,但和核心邏輯沒有關聯,只是為了和3355做一個輸出的區分。
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${server.port}")
private String serverPort;
@Value("${config.info}")
private String configInfo;
@GetMapping("/configInfo")
public String configInfo(){
return "serverPort: " +serverPort+ "\t\n\n configInfo: "+ configInfo;
}
}
搭建總線支持(全局廣播)
改pom
這三個微服務的pom文件中都加上
<!-- 添加消息總線RabbitMQ支持 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
改yml
三個微服務中都加上,這個是spring下面一級的,一定要對齊,不懂的話可以看下我gitee中的源碼。
#spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
在3344的yml中額外加上
#暴露Bus刷新端點
management:
endpoints:
web:
exposure:
include: "bus-refresh"
這里強調一下,也算是解釋。但凡暴露端點的操作pom依賴中都要帶上以下依賴,同時bus-refresh是actuator中的操作。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
測試
測試時千萬記得打開RabbitMQ,不然3355和3366會跑不起來。
和上一篇config部分學習筆記類似,更改gitee中版本號后會發現3344刷新后直接更新了,而3355和3366沒有更新。
與上一篇不同的是,這次我們不是單獨去給3355,3366分別post,而是直接給3344發一個post請求,來做到一處刷新,處處刷新。
curl -X POST "http://localhost:3344/actuator/bus-refresh"
刷新測試頁面后我們就可以看到,3355和3366的版本號也更新了。
更新前:
更新后:
定點通知
這里我們測試只通知3366,不通知3355
3366更新前:
輸入curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3366"。
這里config-client來自yml中的這里
3366則是端口號,組合起來就是destination中需要填的內容。
更新后:
智能推薦
3.Python 高級部分學習筆記
什么是Socket socket(簡稱 套接字) 是進程間通信的一種方式。套接字類型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 協議)或者 SOCK_DGRAM(數據報套接字,主要用于 UDP 協議) 迭代器 通過迭代器,能夠完成數據的生成,而且不需要很大的存儲空間 列表的方式和迭代器的最核心的區別 列表中存儲的是數據的結果,而迭代器中存儲的是生成數據的方式 生成器 生成器是一...
【OpenCV】學習筆記(一):基礎操作部分
前言:跟著淺墨大神,學習OpenCV3后,筆記如下。 1 基礎知識 1.1 加載、修改、保存圖像 加載 cv::imread 保存 cv::cvtColor 保存 cv::imwrite 1.2 獲取圖像像素指針 1.3 創建滑動條 createTrackbar() 【示例】 2 常用的數據結構和函數 2.1 點:Point類 2.2 顏色:Scalar類 2.3 尺寸:Size類 2.4 矩形:...
matlab學習筆記(二) 畫圖部分
matlab學習筆記(二) 畫圖部分 一、最簡單的二維坐標軸圖:使用plot函數 在一張圖上繪制兩個相同長度的向量plot(x,y)。可以多一個參數指定顏色和節點符號plot(c,r,‘b-o’) 第二個’’里面設置很自由,幾個特征(點的圖案,線的類型,顏色)寫的順序可以隨意換(’or—‘,’sg:&r...
plsql學習筆記(二)語法部分
語法部分 一. 變量 1.變量介紹 在編寫pl/sql程序時,可以定義變量和常量;在pl/sql程序中包括有: 1)、標量類型(scalar) 2)、復合類型(composite) --用于操作單條記錄 3)、參照類型(reference) --用于操作多條記錄 4)、lob(large object) 2、標量–常用類型 定義(名 類 空否 默認值) 1)在編寫pl/sql塊時,如果...
LoRaWan協議1.1 ClassB部分學習筆記
LoRaWan協議1.1 ClassB部分學習筆記 目錄 8.對Class B的介紹 9.同步網絡發起下行的原理(class b獨有) 10.Class B上行幀 11. 下行ping包格式(class b獨有) 11.1 物理幀格式 11.2 單播&多播 mac消息 11.2.1 單播mac消息格式 11.2.2多播mac消息格式 12 Beacon信標的獲取和跟蹤 12.1 最小丟失信...
猜你喜歡
Springcloud-Gateway部分學習筆記
文章目錄 三大核心概念 搭建 配置動態路由 常用的Predicate Filter 視頻學習地址:https://www.bilibili.com/video/BV18E411x7eT 源碼地址:https://gitee.com/zhu_xinmiao/springcloud spring cloud版本:H版 Gateway網關實際上就是在微服務前套了一層包裝,使微服務的端口不會直接暴露給使用...
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壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...