使用 Spring Cloud Bus 在微服務(wù)之間傳遞消息示例

2023-04-23 08:36:48 來源: 騰訊云


【資料圖】

下面是一個(gè)完整的示例,演示如何使用 Spring Cloud Bus 在微服務(wù)之間傳遞消息。該示例包含兩個(gè)微服務(wù),一個(gè)是消息發(fā)送者,另一個(gè)是消息接收者。

首先,我們需要創(chuàng)建一個(gè) Spring Boot 項(xiàng)目,并添加 Spring Cloud Bus 和 RabbitMQ 的依賴。在 pom.xml 文件中添加以下依賴:

    org.springframework.cloud    spring-cloud-starter-bus-amqp    2.2.1.RELEASE    org.springframework.boot    spring-boot-starter-web    2.2.1.RELEASE    org.springframework.boot    spring-boot-starter-amqp    2.2.1.RELEASE

在創(chuàng)建的項(xiàng)目中,我們定義了一個(gè)消息類型 MyMessage,該類型包含一個(gè)字符串類型的 content 屬性。

javaCopy codepublic class MyMessage implements Serializable {    private static final long serialVersionUID = 1L;    private String content;    public MyMessage(String content) {        this.content = content;    }    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }}

然后,我們創(chuàng)建了一個(gè)消息發(fā)送者,該發(fā)送者使用 Spring Cloud Bus 發(fā)送消息。

@RestControllerpublic class MyController {    @Autowired    private MessageSender messageSender;    @PostMapping("/send")    public void sendMessage(@RequestBody MyMessage message) {        messageSender.sendMessage(message);    }}@Servicepublic class MessageSender {    private static final Logger LOGGER = LoggerFactory.getLogger(MessageSender.class);    @Autowired    private MessageChannel output;    public void sendMessage(MyMessage message) {        LOGGER.info("Sending message: {}", message.getContent());        output.send(MessageBuilder.withPayload(message).build());    }}@Servicepublic class MessageListener {    private static final Logger LOGGER = LoggerFactory.getLogger(MessageListener.class);    @StreamListener(target = Sink.INPUT, condition = "headers["type"]=="MyMessage"")    public void handleMessage(MyMessage message) {        LOGGER.info("Received message: {}", message.getContent());    }}

在這個(gè)例子中,我們創(chuàng)建了一個(gè) MyController 類,該類定義了一個(gè)發(fā)送消息的 API 接口,接收一個(gè) MyMessage 類型的參數(shù),將參數(shù)傳遞給 MessageSender 類的 sendMessage() 方法。

MessageSender 類定義了一個(gè) sendMessage() 方法,該方法使用 Spring Cloud Stream 的 output 消息通道發(fā)送消息。

MessageListener 類定義了一個(gè) handleMessage() 方法,該方法使用 @StreamListener 注解監(jiān)聽 Spring Cloud Stream 的 input 消息通道,并根據(jù)消息類型過濾消息。當(dāng)有符合條件的消息到達(dá)時(shí),handleMessage() 方法會被自動調(diào)用,處理接收到的消息。

在以上代碼中,我們使用了 @Autowired 注解自動注入了 MessageSender 和 MessageListener 類,這是 Spring Boot 自帶的依賴注入功能。

運(yùn)行應(yīng)用程序后,我們可以使用 Postman 工具或其他 HTTP 工具發(fā)送 HTTP POST 請求,將消息發(fā)送到消息發(fā)送者的 API 接口,如下所示:

POST http://localhost:8080/send HTTP/1.1Content-Type: application/json{    "content": "Hello, World!"}

當(dāng)消息到達(dá)時(shí),消息接收者會打印消息內(nèi)容,如下所示:

2023-04-19 09:24:47.836  INFO 29740 --- [afka-listener-1] com.example.demo.M

關(guān)鍵詞:

精選 導(dǎo)讀

為什么顯示版本不兼容(網(wǎng)頁會提示版本不兼容的原因) 環(huán)球

為什么顯示版本不兼容,網(wǎng)頁會提示版本不兼容的原因很多人還不知道,現(xiàn)在讓我們一起來看看吧!解答:1、因

發(fā)布時(shí)間: 2023-04-23 08:33
要聞   2023-04-23

體育節(jié)|最資訊

1942年,在抗日戰(zhàn)爭的艱苦時(shí)期,南京國民政府設(shè)置了全國性的體育節(jié)。在中國歷史上,體育活動的開展堪稱久遠(yuǎn)

發(fā)布時(shí)間: 2023-04-23 08:07
要聞   2023-04-23

備孕前三個(gè)月飲食列表_備孕前三個(gè)月吃什么好

1、在懷孕的前3個(gè)月多吃一些維生素比較豐富的食物,因?yàn)榫S生素可以幫助女人卵子和受精卵的發(fā)育和成長,也要

發(fā)布時(shí)間: 2023-04-23 07:33
要聞   2023-04-23

法碩考研培訓(xùn)班哪個(gè)好_法碩考研 速看

1、法學(xué)碩士考研需要考政治理論、外國語(英、日、俄選一)、專業(yè)綜合課(含憲法、法學(xué)基礎(chǔ)理論、中國法制史

發(fā)布時(shí)間: 2023-04-23 07:04
要聞   2023-04-23

自己寫的協(xié)議具有法律效力嗎|環(huán)球快看

一、自己寫的協(xié)議具有法律效力嗎自己寫的協(xié)議具有法律效力,但需要行為人具有相應(yīng)的民事行為能力、意思表示

發(fā)布時(shí)間: 2023-04-23 06:26
要聞   2023-04-23

熱點(diǎn) 推薦

使用 Spring Cloud Bus 在微服務(wù)之間傳遞消息示例

下面是一個(gè)完整的示例,演示如何使用SpringCloudBus在微服務(wù)之間傳遞消息。該示例包含兩個(gè)微服務(wù),一個(gè)是消

發(fā)布時(shí)間: 2023-04-23 08:36
IT   2023-04-23

北京西站到大興機(jī)場大巴多少錢(北京西站到大興機(jī)場)|今日

1、52分鐘約50 1公里|1 8公里擁堵途經(jīng):京開高速、大興機(jī)場高速北京西站(地鐵站)蓮花池東路700米蓮花池東路

發(fā)布時(shí)間: 2023-04-23 08:50
國內(nèi)   2023-04-23

為什么顯示版本不兼容(網(wǎng)頁會提示版本不兼容的原因) 環(huán)球

為什么顯示版本不兼容,網(wǎng)頁會提示版本不兼容的原因很多人還不知道,現(xiàn)在讓我們一起來看看吧!解答:1、因

發(fā)布時(shí)間: 2023-04-23 08:33
要聞   2023-04-23

什么的眼睛填空(什么的眼睛填空)-天天熱點(diǎn)評

1、什么的眼睛(填空):(水汪汪)的眼睛、(大大)的眼睛、(一樣)的眼睛、(水靈靈)的眼睛、(亮晶晶)的眼睛、(明

發(fā)布時(shí)間: 2023-04-23 08:19
科技   2023-04-23

美團(tuán)助力車怎么收費(fèi)

1、首先打開支付寶,點(diǎn)擊查看全部應(yīng)用,如下圖所示。2、2、在應(yīng)用中找到哈啰出行,如下圖所示。3、3、然后

發(fā)布時(shí)間: 2023-04-23 08:34
IT   2023-04-23

當(dāng)前最新:北境遺孤

蘇 俄海軍艦艇一覽(二)前言:1 科普內(nèi)容,不做商業(yè)目的。2 僅對服役 退役 非保密裝備分類,以2022年公布

發(fā)布時(shí)間: 2023-04-23 08:01
國內(nèi)   2023-04-23

體育節(jié)|最資訊

1942年,在抗日戰(zhàn)爭的艱苦時(shí)期,南京國民政府設(shè)置了全國性的體育節(jié)。在中國歷史上,體育活動的開展堪稱久遠(yuǎn)

發(fā)布時(shí)間: 2023-04-23 08:07
要聞   2023-04-23

神態(tài)描寫精彩片段200字_神態(tài)描寫精彩片段

1、他真的生氣了,雙手緊緊握住,微微顫抖著。2、胸脯劇烈地起伏著,仿佛就要爆炸的一個(gè)大氣球,脖子上的經(jīng)

發(fā)布時(shí)間: 2023-04-23 07:55
科技   2023-04-23

周星馳的配音是誰呢_周星馳的配音是誰

1、他的原名叫石兆采,藝名石班瑜,年齡比周星馳略大,差不多有42、43歲。2、1985年開始進(jìn)入配音界 。本文分享

發(fā)布時(shí)間: 2023-04-23 08:07
IT   2023-04-23

德國國家旅游局微信公眾號21日稱,自2023年5月1日起德國將恢

德國國家旅游局微信公眾號21日稱,自2023年5月1日起德國將恢復(fù)開放旅游簽證。所有針對從中國赴德游客的入境

發(fā)布時(shí)間: 2023-04-23 07:57
國內(nèi)   2023-04-23

天天熱文:dnf紅眼用什么徽章_dnf徽章怎么用

1、徽章是直接戴不了的,只有鑲嵌在裝備上才可以戴,2、而鑲嵌徽章是在天空那邊的達(dá)芙妮,40萬開2個(gè)孔,3、不一

發(fā)布時(shí)間: 2023-04-23 07:28
國內(nèi)   2023-04-23

備孕前三個(gè)月飲食列表_備孕前三個(gè)月吃什么好

1、在懷孕的前3個(gè)月多吃一些維生素比較豐富的食物,因?yàn)榫S生素可以幫助女人卵子和受精卵的發(fā)育和成長,也要

發(fā)布時(shí)間: 2023-04-23 07:33
要聞   2023-04-23

施慧達(dá)說明書用量_施慧達(dá)說明書

1、要是有高血壓或者是心絞痛的話是可以用施慧達(dá)這個(gè)藥的,而且一般這個(gè)藥就是用于這兩種疾病之上的,不過

發(fā)布時(shí)間: 2023-04-23 07:14
科技   2023-04-23

縫針后不能吃什么蔬菜_縫針后不能吃什么|每日聚焦

1、縫針后需要注意休息,可以服用一些活血化瘀,消炎止痛的藥物以防止感染發(fā)生。2、縫針之后需要定時(shí)消毒,

發(fā)布時(shí)間: 2023-04-23 07:24
IT   2023-04-23

法碩考研培訓(xùn)班哪個(gè)好_法碩考研 速看

1、法學(xué)碩士考研需要考政治理論、外國語(英、日、俄選一)、專業(yè)綜合課(含憲法、法學(xué)基礎(chǔ)理論、中國法制史

發(fā)布時(shí)間: 2023-04-23 07:04
要聞   2023-04-23

滄州特產(chǎn)禮品專賣_滄州特產(chǎn)

1、答:徐州特產(chǎn)是小兒酥和王集香腸,滄州特產(chǎn)是金絲小棗和泊頭鴨梨。2、徐州特產(chǎn)一:小孩酥3、小孩酥是江蘇

發(fā)布時(shí)間: 2023-04-23 06:56
科技   2023-04-23

與橋有關(guān)的俗語_與母親有關(guān)的俗語

1、娘,老媽,媽媽。2、媽咪,媽,阿媽。以上就是【與橋有關(guān)的俗語,與母親有關(guān)的俗語】相關(guān)內(nèi)容。

發(fā)布時(shí)間: 2023-04-23 06:51
IT   2023-04-23

焦點(diǎn)快播:擲鐵餅者是什么時(shí)期的作品(擲鐵餅者是什么流派作

《擲鐵餅者》中,藝術(shù)家把握住了從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的關(guān)鍵環(huán)節(jié),達(dá)到了使觀眾心理上獲得“運(yùn)動感”

發(fā)布時(shí)間: 2023-04-23 06:42
國內(nèi)   2023-04-23

自己寫的協(xié)議具有法律效力嗎|環(huán)球快看

一、自己寫的協(xié)議具有法律效力嗎自己寫的協(xié)議具有法律效力,但需要行為人具有相應(yīng)的民事行為能力、意思表示

發(fā)布時(shí)間: 2023-04-23 06:26
要聞   2023-04-23

高速上撞死人要坐牢嗎 環(huán)球熱推薦

一、高速上撞死人要坐牢嗎高速上撞死人是否需要坐牢,要看是否承擔(dān)主要責(zé)任或者全部責(zé)任。具體是:開車在高

發(fā)布時(shí)間: 2023-04-23 06:19
科技   2023-04-23