SpringBoot實(shí)現(xiàn)RabbitMQ監(jiān)聽消息的四種方式
Spring Boot 實(shí)現(xiàn) RabbitMQ 監(jiān)聽消息的方式有以下幾種:
@RabbitListener 注解方式:通過在方法上標(biāo)記
@RabbitListener
注解來監(jiān)聽指定的隊(duì)列,當(dāng)消息到達(dá)時(shí),被注解的方法將被調(diào)用。MessageListener 接口方式:實(shí)現(xiàn) Spring AMQP 提供的
MessageListener
接口,編寫自定義的消息監(jiān)聽器,然后使用SimpleMessageListenerContainer
設(shè)置消息監(jiān)聽器。MessageListenerAdapter 適配器方式:通過
MessageListenerAdapter
類,可以將普通的 Java 方法轉(zhuǎn)換為消息監(jiān)聽器,從而簡化消息處理邏輯。@RabbitHandler 注解方式:結(jié)合
@RabbitListener
和@RabbitHandler
注解,可以實(shí)現(xiàn)多個(gè)不同類型消息的處理方法,根據(jù)消息內(nèi)容的不同調(diào)用對(duì)應(yīng)的處理方法。
這些方式都可以在 Spring Boot 項(xiàng)目中方便地實(shí)現(xiàn) RabbitMQ 的消息監(jiān)聽功能。
1. @RabbitListener 注解方式
以下是使用 @RabbitListener
注解方式實(shí)現(xiàn) RabbitMQ 消息監(jiān)聽的示例代碼:
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component public class RabbitMQListener { @RabbitListener(queues = "myQueue") public void handleMessage(String message) { System.out.println("Received message: " + message); // 在這里處理接收到的消息 } }
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為 RabbitMQListener
的類,并使用 @RabbitListener
注解標(biāo)記 handleMessage
方法,指定監(jiān)聽名為 “myQueue” 的隊(duì)列。當(dāng)消息到達(dá)隊(duì)列時(shí),handleMessage
方法將被調(diào)用來處理接收到的消息。
2. MessageListener 接口方式
以下是使用 MessageListener
接口方式實(shí)現(xiàn) RabbitMQ 消息監(jiān)聽的示例代碼:
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageListener; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; public class MyMessageListener implements MessageListener { @Override public void onMessage(Message message) { System.out.println("Received message: " + new String(message.getBody())); // 在這里處理接收到的消息 } public static void main(String[] args) { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); container.setConnectionFactory(connectionFactory); // 設(shè)置連接工廠 container.setQueueNames("myQueue"); // 設(shè)置監(jiān)聽的隊(duì)列名稱 container.setMessageListener(new MyMessageListener()); // 設(shè)置消息監(jiān)聽器 container.start(); // 啟動(dòng)監(jiān)聽容器 } }
在這個(gè)示例中,我們創(chuàng)建了一個(gè)實(shí)現(xiàn)了 MessageListener
接口的 MyMessageListener
類來處理接收到的消息。然后,我們使用 SimpleMessageListenerContainer
設(shè)置連接工廠、隊(duì)列名稱和消息監(jiān)聽器,并啟動(dòng)監(jiān)聽容器。當(dāng)消息到達(dá)時(shí),onMessage
方法將被調(diào)用來處理接收到的消息。
3. MessageListenerAdapter 適配器方式
以下是使用 MessageListenerAdapter
適配器方式實(shí)現(xiàn) RabbitMQ 消息監(jiān)聽的示例代碼:
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageListener; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.amqp.support.converter.SimpleMessageConverter; public class MyMessageListener { public void handleMessage(String message) { System.out.println("Received message: " + message); // 在這里處理接收到的消息 } public static void main(String[] args) { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); container.setConnectionFactory(connectionFactory); // 設(shè)置連接工廠 container.setQueueNames("myQueue"); // 設(shè)置監(jiān)聽的隊(duì)列名稱 MessageListenerAdapter adapter = new MessageListenerAdapter(new MyMessageListener()); adapter.setDefaultListenerMethod("handleMessage"); // 設(shè)置默認(rèn)處理方法 MessageConverter converter = new SimpleMessageConverter(); adapter.setMessageConverter(converter); // 設(shè)置消息轉(zhuǎn)換器 container.setMessageListener(adapter); // 設(shè)置消息監(jiān)聽適配器 container.start(); // 啟動(dòng)監(jiān)聽容器 } }
在這個(gè)示例中,我們創(chuàng)建了一個(gè) MyMessageListener
類,并定義了一個(gè)處理消息的方法 handleMessage
。然后,我們使用 MessageListenerAdapter
類將 MyMessageListener
類中的方法轉(zhuǎn)換為消息監(jiān)聽器,并設(shè)置默認(rèn)處理方法。最后,將消息監(jiān)聽適配器設(shè)置到 SimpleMessageListenerContainer
中,并啟動(dòng)監(jiān)聽容器來處理接收到的消息。
4. @RabbitHandler 注解方式
使用 @RabbitHandler
注解方式結(jié)合 @RabbitListener
注解實(shí)現(xiàn)多個(gè)不同類型消息的處理示例代碼如下:
import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component @RabbitListener(queues = "myQueue") public class MyMessageHandler { @RabbitHandler public void handleStringMessage(String message) { System.out.println("Received string message: " + message); // 處理字符串類型消息 } @RabbitHandler public void handleIntMessage(Integer message) { System.out.println("Received integer message: " + message); // 處理整數(shù)類型消息 } }
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為 MyMessageHandler
的類,并使用 @RabbitListener
注解標(biāo)記整個(gè)類,指定監(jiān)聽名為 “myQueue” 的隊(duì)列。然后,我們?cè)陬愔卸x了兩個(gè)處理消息的方法,分別使用 @RabbitHandler
注解標(biāo)記,分別處理字符串類型和整數(shù)類型的消息。當(dāng)不同類型的消息到達(dá)隊(duì)列時(shí),根據(jù)消息類型調(diào)用對(duì)應(yīng)的處理方法來處理消息。
到此這篇關(guān)于SpringBoot實(shí)現(xiàn)RabbitMQ監(jiān)聽消息的四種方式的文章就介紹到這了,更多相關(guān)SpringBoot RabbitMQ監(jiān)聽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java字節(jié)碼增強(qiáng)技術(shù)知識(shí)點(diǎn)詳解
在本篇文章里小編給大家整理的是一篇關(guān)于Java字節(jié)碼增強(qiáng)技術(shù)知識(shí)點(diǎn)詳解內(nèi)容,有興趣的朋友可以跟著學(xué)習(xí)下。2021-08-08Java使用字節(jié)流實(shí)現(xiàn)圖片音頻的復(fù)制
今天帶大家學(xué)習(xí)Java的相關(guān)知識(shí),文章圍繞著Java如何使用字節(jié)流實(shí)現(xiàn)圖片音頻的復(fù)制展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下2021-06-06全局記錄Feign的請(qǐng)求和響應(yīng)日志方式
這篇文章主要介紹了全局記錄Feign的請(qǐng)求和響應(yīng)日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06Java編程實(shí)現(xiàn)比對(duì)兩個(gè)文本文件并標(biāo)記相同與不同之處的方法
這篇文章主要介紹了Java編程實(shí)現(xiàn)比對(duì)兩個(gè)文本文件并標(biāo)記相同與不同之處的方法,涉及java針對(duì)文本文件的讀取、遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10java計(jì)算機(jī)器人的運(yùn)動(dòng)范圍
這篇文章主要為大家詳細(xì)介紹了java計(jì)算機(jī)器人運(yùn)動(dòng)范圍的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01springboot集成Swagger的方法(讓你擁有屬于自己的api管理器)
在大型的項(xiàng)目中,如果你有非常多的接口需要統(tǒng)一管理,或者需要進(jìn)行接口測試,那么我們通常會(huì)在繁雜地api中找到需要進(jìn)行測試或者管理的接口,接下來通過本文給大家介紹springboot集成Swagger的方法讓你擁有屬于自己的api管理器,感興趣的朋友一起看看吧2021-11-11Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法
遇到了個(gè)問題,同一天可以輸入多個(gè)時(shí)間段,但是每個(gè)時(shí)間段的時(shí)間不能出現(xiàn)重疊,這不就是判斷數(shù)據(jù)返回是否有重疊的變種嗎,所以本文給大家介紹了Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法,需要的朋友可以參考下2024-07-07使用Mybatis-plus策略自動(dòng)更新數(shù)據(jù)庫時(shí)間失敗問題解決
這篇文章主要介紹了使用Mybatis-plus策略自動(dòng)更新數(shù)據(jù)庫時(shí)間失敗問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10