您的位置:首頁 > 推薦 >

Spring Cloud Bus在服務(wù)之間發(fā)送和接收消息(一)-環(huán)球熱議

2023-04-19 06:46:01 來源: 騰訊云

在微服務(wù)架構(gòu)中,服務(wù)之間的通信非常重要。在某些情況下,我們需要在服務(wù)之間發(fā)送和接收消息,以實現(xiàn)更高效、可靠的通信。這時,SpringCloudBu

介紹

在微服務(wù)架構(gòu)中,服務(wù)之間的通信非常重要。在某些情況下,我們需要在服務(wù)之間發(fā)送和接收消息,以實現(xiàn)更高效、可靠的通信。這時,Spring Cloud Bus 是一個非常有用的工具。

Spring Cloud Bus 是一個用于在分布式系統(tǒng)中發(fā)送和接收消息的框架。它基于 Spring Boot 和 Spring Cloud 構(gòu)建,并且可以與多種消息代理一起使用,例如 RabbitMQ 和 Kafka。


(資料圖)

在本文中,我們將介紹 Spring Cloud Bus 的基本概念和用途,并提供詳細(xì)的文檔和示例,以幫助您了解如何使用它來實現(xiàn)服務(wù)之間的消息傳遞。

Spring Cloud Bus 的基本概念和用途

Spring Cloud Bus 的主要目的是實現(xiàn)服務(wù)之間的消息傳遞和事件發(fā)布。它使用輕量級的消息代理作為基礎(chǔ),并使用 Spring Boot 和 Spring Cloud 進(jìn)行構(gòu)建。

在 Spring Cloud Bus 中,每個服務(wù)都可以作為生產(chǎn)者或消費者。服務(wù)可以通過發(fā)送消息來通知其他服務(wù)發(fā)生的事件,也可以訂閱其他服務(wù)發(fā)送的消息以執(zhí)行相應(yīng)的操作。

Spring Cloud Bus 還提供了一些有用的特性,例如:

支持異步消息傳遞:Spring Cloud Bus 可以在多個服務(wù)之間異步傳遞消息,從而實現(xiàn)更高效、可靠的通信。支持消息廣播:Spring Cloud Bus 可以將消息廣播到所有訂閱該消息的服務(wù),從而實現(xiàn)全局的事件發(fā)布。支持消息過濾:Spring Cloud Bus 可以根據(jù)消息的類型或內(nèi)容來過濾消息,從而實現(xiàn)更精確的消息傳遞。支持消息持久化:Spring Cloud Bus 可以將消息持久化到消息代理中,從而確保在服務(wù)宕機(jī)或網(wǎng)絡(luò)故障時不會丟失消息。

Spring Cloud Bus 的使用

在本節(jié)中,我們將介紹如何使用 Spring Cloud Bus 來實現(xiàn)服務(wù)之間的消息傳遞。

配置 Spring Cloud Bus

要使用 Spring Cloud Bus,首先需要在每個服務(wù)中添加 Spring Cloud Bus 的依賴項??梢栽?Maven 或 Gradle 中添加以下依賴項:

    org.springframework.cloud    spring-cloud-starter-bus-amqp

此依賴項包含了 Spring Cloud Bus 的核心庫以及與 AMQP(如 RabbitMQ)消息代理集成所需的庫。

接下來,需要配置每個服務(wù)以使用 Spring Cloud Bus。可以在 application.yml 或 application.properties 文件中添加以下配置:

spring:  rabbitmq:    host: localhost    port: 5672    username: guest    password: guestmanagement:  endpoints:    web:      exposure:        include: bus-refresh

這個配置指定了 RabbitMQ 的地址和憑證信息,并且開啟了一個名為 "bus-refresh" 的管理端點。通過該端點,可以觸發(fā)服務(wù)的刷新操作(例如,重新加載配置文件)。

還可以配置其他 Spring Cloud Bus 的選項。例如,可以使用 spring.cloud.bus.id 屬性指定當(dāng)前服務(wù)的標(biāo)識符,使用 spring.cloud.bus.destination 屬性指定要訂閱的目的地,使用 spring.cloud.bus.trace.enabled 屬性啟用跟蹤功能等等。

在服務(wù)之間發(fā)送消息

使用 Spring Cloud Bus,可以通過向消息代理發(fā)送消息來實現(xiàn)服務(wù)之間的通信。

在 Spring Boot 應(yīng)用程序中,可以使用 @Autowired 注解將 Spring Cloud Bus 作為一個 bean 注入。然后,就可以使用 Spring Cloud Bus 提供的 API 來發(fā)送消息了。

例如,下面是一個示例,演示如何在一個服務(wù)中發(fā)送消息:

@RestController@RequestMapping("/bus")public class BusController {    @Autowired    private BusProperties busProperties;    @Autowired    private RabbitTemplate rabbitTemplate;    @PostMapping("/send")    public void sendMessage(@RequestBody String message) {        String destination = busProperties.getDestination();        rabbitTemplate.convertAndSend(destination, message);    }}

在這個示例中,BusController 類使用 @RestController 和 @RequestMapping 注解來定義一個 RESTful 端點。該端點可以接收一個消息體,并將其發(fā)送到 Spring Cloud Bus 的目的地。在發(fā)送消息之前,BusController 從 BusProperties bean 中獲取目的地信息,并使用 RabbitTemplate bean 來實現(xiàn)與 RabbitMQ 的通信。

在服務(wù)之間接收消息

除了發(fā)送消息外,還可以通過訂閱 Spring Cloud Bus 的目的地來接收消息。要實現(xiàn)這個功能,可以在應(yīng)用程序中注冊一個 MessageListener bean,并使用 @RabbitListener 注解來指定要訂閱的目的地。

例如,下面是一個示例,演示如何在一個服務(wù)中接收消息:

@Componentpublic class MessageListener {    @RabbitListener(queues = "${spring.cloud.bus.destination}")    public void handleMessage(String message) {        System.out.println("Received message: " + message);    }}

在這個示例中,MessageListener 類使用 @Component 注解將其聲明為 Spring bean。然后,該類使用 @RabbitListener 注解來指定要訂閱的目的地。在收到消息后,handleMessage 方法將消息輸出到控制臺。

關(guān)鍵詞:

精選 導(dǎo)讀

募資55億港元萬物云啟動招股 預(yù)計9月29日登陸港交所主板

萬科9月19日早間公告,萬物云當(dāng)日啟動招股,預(yù)計發(fā)行價介乎每股47 1港元至52 7港元,預(yù)計9月29日登陸港交所主板。按發(fā)行1 167億股計算,萬

發(fā)布時間: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情況曝光 隱形重倉股多為高端制造業(yè)

隨著半年報披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數(shù)為9794只,資產(chǎn)凈值為269454 75億元,同比上

發(fā)布時間: 2022-09-02 10:45
資訊   2022-09-02

又有上市公司宣布變賣房產(chǎn) 上市公司粉飾財報動作不斷

再有上市公司宣布變賣房產(chǎn)。四川長虹25日稱,擬以1 66億元的轉(zhuǎn)讓底價掛牌出售31套房產(chǎn)。今年以來,A股公司出售房產(chǎn)不斷。根據(jù)記者不完全統(tǒng)

發(fā)布時間: 2022-08-26 09:44
資訊   2022-08-26

16天12連板大港股份回復(fù)深交所關(guān)注函 股份繼續(xù)沖高

回復(fù)交易所關(guān)注函后,大港股份繼續(xù)沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時觸及漲停,報20 2元 股。值得一提的是,在7月21日

發(fā)布時間: 2022-08-12 09:56
資訊   2022-08-12

萬家基金再添第二大股東 中泰證券擬受讓11%基金股權(quán)

7月13日,中泰證券發(fā)布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權(quán),交易雙方共同確定本次交易的標(biāo)的資

發(fā)布時間: 2022-07-14 09:39
管理   2022-07-14

央行連續(xù)7日每天30億元逆回購 對債市影響如何?

央行12日再次開展了30億元逆回購操作,中標(biāo)利率2 10%。這已是央行連續(xù)7日每天僅進(jìn)行30億元的逆回購縮量投放,創(chuàng)下去年1月以來的最低操作規(guī)

發(fā)布時間: 2022-07-13 09:38
資訊   2022-07-13

美元指數(shù)創(chuàng)近20年新高 黃金期貨創(chuàng)出逾9個月新低

由于對美聯(lián)儲激進(jìn)加息的擔(dān)憂,美元指數(shù)11日大漲近1%創(chuàng)出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創(chuàng)出逾9個月新低。美

發(fā)布時間: 2022-07-13 09:36
資訊   2022-07-13

美股三大股指全線下跌 納斯達(dá)克跌幅創(chuàng)下記錄以來最大跌幅

今年上半年,美股持續(xù)回落。數(shù)據(jù)顯示,道瓊斯指數(shù)上半年下跌15 3%,納斯達(dá)克綜合指數(shù)下跌29 5%,標(biāo)普500指數(shù)下跌20 6%。其中,納斯達(dá)克連續(xù)

發(fā)布時間: 2022-07-04 09:51
推薦   2022-07-04

融資客熱情回升 兩市融資余額月內(nèi)增加超344億元

近期A股走強(qiáng),滬指6月以來上漲4%,融資客熱情明顯回升。數(shù)據(jù)顯示,截至6月16日,兩市融資余額1 479萬億元,月內(nèi)增加344 67億元,最近一個半

發(fā)布時間: 2022-06-20 09:41
資訊   2022-06-20

4個交易日凈買入超百億元 北向資金持續(xù)流入A股市場

北向資金凈流入態(tài)勢延續(xù)。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計凈

發(fā)布時間: 2022-06-17 09:37
推薦   2022-06-17

熱門TAG

more
中國外貿(mào)網(wǎng)簡介 重磅突發(fā)!王思聰在上海打人?警方剛剛通報 女子隨手捐10元4個月后收到還款道謝 看到回復(fù)破防 國內(nèi)豬肉價格開啟新一輪周期?專家:國家調(diào)控政策正在起作用 彩電市場價格持續(xù)走低:50英寸千元輕松購還會降價嗎? 鶴崗中介談1.5萬全款買房:別沖動 詳情曝光系40年房齡的老房子價格自然便 穩(wěn)外貿(mào) 福建拓“新”途 福建也積極開辟國際物流新通道 這條名為BarMar的能源運輸路線以幫助緩解歐洲所面臨的能源危機(jī) 寧波銀行:聚焦主責(zé)主業(yè),更好服務(wù)實體經(jīng)濟(jì) 重磅利好!涉房企業(yè)A股融資審核放寬,“白名單”浮出水面 能源是經(jīng)濟(jì)發(fā)展的動力源泉 美國經(jīng)濟(jì)蕭條對汽車和電力市場的沖擊力有多 多頭醞釀更大爆發(fā)!美元有望再大漲近百點 廣西北部灣畔崛起國際大港 商企耕耘十年等來春暖花開時 中國A股半導(dǎo)體板塊周四大漲 十年時間增長超1200億元 2021年創(chuàng)造天津市進(jìn)出口歷史最高紀(jì)錄 天津口岸完成進(jìn)出口貿(mào)易值2381億美元 較2012年增長16.6% 深圳機(jī)場口岸通過發(fā)揮東南亞航線優(yōu)勢 不斷豐富進(jìn)口水果品類 國際航線(含港澳臺)日均執(zhí)行客運航班量達(dá)143班次 創(chuàng)今年新高 待中吉烏鐵路建成后 將高效聯(lián)通中歐班列的中通道與南通道線路 中國與RCEP成員國經(jīng)過陸海新通道進(jìn)出口總量52068標(biāo)箱 國航已率先在空客、波音機(jī)型上開展可持續(xù)航空燃料應(yīng)用 中國制造業(yè)屢創(chuàng)奇跡 牢牢站穩(wěn)世界“C位” 今年新疆不斷加大能源增產(chǎn)增供力度 新疆煤炭產(chǎn)量增長31.1%、排全國第2位 陶悅?cè)河媱潎@大健康等產(chǎn)業(yè)進(jìn)行增資擴(kuò)產(chǎn) 光伏電站位于Kharsaa地區(qū) 是卡塔爾首個太陽能發(fā)電廠 過去十年,重慶工業(yè)增加值總額由2012年的4291.4億元提高至2021年的7888.7億元 2021年鹽湖化工產(chǎn)業(yè)實現(xiàn)產(chǎn)值331.8億元 增長46.2% 切入儲能賽道的消費電池頭部玩家德賽電池近兩日連續(xù)打板漲停 6個二線城市首套房貸款利率跌破4% 低至3.8% 倡議項目將由德國聯(lián)邦經(jīng)濟(jì)和氣候保護(hù)部的能源研究預(yù)算提供資金