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á)時,被注解的方法將被調(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)多個不同類型消息的處理方法,根據(jù)消息內(nèi)容的不同調(diào)用對應(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);
// 在這里處理接收到的消息
}
}
在這個示例中,我們創(chuàng)建了一個名為 RabbitMQListener 的類,并使用 @RabbitListener 注解標(biāo)記 handleMessage 方法,指定監(jiān)聽名為 “myQueue” 的隊(duì)列。當(dāng)消息到達(dá)隊(duì)列時,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(); // 啟動監(jiān)聽容器
}
}
在這個示例中,我們創(chuàng)建了一個實(shí)現(xiàn)了 MessageListener 接口的 MyMessageListener 類來處理接收到的消息。然后,我們使用 SimpleMessageListenerContainer 設(shè)置連接工廠、隊(duì)列名稱和消息監(jiān)聽器,并啟動監(jiān)聽容器。當(dāng)消息到達(dá)時,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(); // 啟動監(jiān)聽容器
}
}
在這個示例中,我們創(chuàng)建了一個 MyMessageListener 類,并定義了一個處理消息的方法 handleMessage。然后,我們使用 MessageListenerAdapter 類將 MyMessageListener 類中的方法轉(zhuǎn)換為消息監(jiān)聽器,并設(shè)置默認(rèn)處理方法。最后,將消息監(jiān)聽適配器設(shè)置到 SimpleMessageListenerContainer 中,并啟動監(jiān)聽容器來處理接收到的消息。
4. @RabbitHandler 注解方式
使用 @RabbitHandler 注解方式結(jié)合 @RabbitListener 注解實(shí)現(xiàn)多個不同類型消息的處理示例代碼如下:
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ù)類型消息
}
}
在這個示例中,我們創(chuàng)建了一個名為 MyMessageHandler 的類,并使用 @RabbitListener 注解標(biāo)記整個類,指定監(jiān)聽名為 “myQueue” 的隊(duì)列。然后,我們在類中定義了兩個處理消息的方法,分別使用 @RabbitHandler 注解標(biāo)記,分別處理字符串類型和整數(shù)類型的消息。當(dāng)不同類型的消息到達(dá)隊(duì)列時,根據(jù)消息類型調(diào)用對應(yīng)的處理方法來處理消息。
到此這篇關(guān)于SpringBoot實(shí)現(xiàn)RabbitMQ監(jiān)聽消息的四種方式的文章就介紹到這了,更多相關(guān)SpringBoot RabbitMQ監(jiān)聽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis-Plus實(shí)現(xiàn)對查詢結(jié)果進(jìn)行分頁的基本步驟
MyBatis-Plus 是一個 MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,MyBatis-Plus 支持多種數(shù)據(jù)庫的分頁查詢,其分頁功能是通過 Page 類實(shí)現(xiàn)的,本文介紹了使用 MyBatis-Plus 實(shí)現(xiàn)分頁查詢的基本步驟,需要的朋友可以參考下2024-08-08
利用Spring IOC技術(shù)實(shí)現(xiàn)用戶登錄驗(yàn)證機(jī)制
這篇文章主要為大家詳細(xì)介紹了Spring IOC技術(shù)實(shí)現(xiàn)用戶登錄驗(yàn)證機(jī)制的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
解決引入Redisson可能會出現(xiàn)項(xiàng)目啟動失敗的問題
這篇文章主要介紹了解決引入Redisson可能會出現(xiàn)項(xiàng)目啟動失敗的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Java?map和bean互轉(zhuǎn)常用的方法總結(jié)
這篇文章主要給大家介紹了關(guān)于Java中map和bean互轉(zhuǎn)常用方法的相關(guān)資料,平時日常Java開發(fā),經(jīng)常會涉及到Java?Bean和Map之間的類型轉(zhuǎn)換,需要的朋友可以參考下2023-09-09
SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁的項(xiàng)目實(shí)踐
MyBatis-Plus是基于MyBatis的持久層增強(qiáng)工具,提供簡化CRUD、代碼生成器、條件構(gòu)造器、分頁及樂觀鎖等功能,極大簡化了開發(fā)工作量并提高了開發(fā)效率,本文就來介紹一下SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁的項(xiàng)目實(shí)踐,感興趣的可以了解一下2024-11-11
?Java數(shù)據(jù)結(jié)構(gòu)的十大排序
這篇文章主要介紹了?Java數(shù)據(jù)結(jié)構(gòu)的十大排序,排序算法分為比較類排序和非比較類排序,具體的內(nèi)容,需要的朋友參考下面思維導(dǎo)圖及文章介紹,希望對你有所幫助2022-01-01

