Spring Boot 實現 RabbitMQ 監聽消息的幾種方式

Spring Boot 實現 RabbitMQ 監聽消息的幾種方式

  • 1. @RabbitListener 注解方式
  • 2. MessageListener 接口方式
  • 3. MessageListenerAdapter 適配器方式
  • 4. @RabbitHandler 注解方式

Spring Boot 實現 RabbitMQ 監聽消息的方式有以下幾種:

  1. @RabbitListener 注解方式:通過在方法上標記 @RabbitListener 注解來監聽指定的隊列,當消息到達時,被注解的方法將被調用。

  2. MessageListener 接口方式:實現 Spring AMQP 提供的 MessageListener 接口,編寫自定義的消息監聽器,然后使用 SimpleMessageListenerContainer 設置消息監聽器。

  3. MessageListenerAdapter 適配器方式:通過 MessageListenerAdapter 類,可以將普通的 Java 方法轉換為消息監聽器,從而簡化消息處理邏輯。

  4. @RabbitHandler 注解方式:結合 @RabbitListener@RabbitHandler 注解,可以實現多個不同類型消息的處理方法,根據消息內容的不同調用對應的處理方法。

這些方式都可以在 Spring Boot 項目中方便地實現 RabbitMQ 的消息監聽功能。

1. @RabbitListener 注解方式

以下是使用 @RabbitListener 注解方式實現 RabbitMQ 消息監聽的示例代碼:

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);// 在這里處理接收到的消息}
}

在這個示例中,我們創建了一個名為 RabbitMQListener 的類,并使用 @RabbitListener 注解標記 handleMessage 方法,指定監聽名為 “myQueue” 的隊列。當消息到達隊列時,handleMessage 方法將被調用來處理接收到的消息。

2. MessageListener 接口方式

以下是使用 MessageListener 接口方式實現 RabbitMQ 消息監聽的示例代碼:

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;public class MyMessageListener implements MessageListener {@Overridepublic 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); // 設置連接工廠container.setQueueNames("myQueue"); // 設置監聽的隊列名稱container.setMessageListener(new MyMessageListener()); // 設置消息監聽器container.start(); // 啟動監聽容器}
}

在這個示例中,我們創建了一個實現了 MessageListener 接口的 MyMessageListener 類來處理接收到的消息。然后,我們使用 SimpleMessageListenerContainer 設置連接工廠、隊列名稱和消息監聽器,并啟動監聽容器。當消息到達時,onMessage 方法將被調用來處理接收到的消息。

3. MessageListenerAdapter 適配器方式

以下是使用 MessageListenerAdapter 適配器方式實現 RabbitMQ 消息監聽的示例代碼:

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); // 設置連接工廠container.setQueueNames("myQueue"); // 設置監聽的隊列名稱MessageListenerAdapter adapter = new MessageListenerAdapter(new MyMessageListener());adapter.setDefaultListenerMethod("handleMessage"); // 設置默認處理方法MessageConverter converter = new SimpleMessageConverter();adapter.setMessageConverter(converter); // 設置消息轉換器container.setMessageListener(adapter); // 設置消息監聽適配器container.start(); // 啟動監聽容器}
}

在這個示例中,我們創建了一個 MyMessageListener 類,并定義了一個處理消息的方法 handleMessage。然后,我們使用 MessageListenerAdapter 類將 MyMessageListener 類中的方法轉換為消息監聽器,并設置默認處理方法。最后,將消息監聽適配器設置到 SimpleMessageListenerContainer 中,并啟動監聽容器來處理接收到的消息。

4. @RabbitHandler 注解方式

使用 @RabbitHandler 注解方式結合 @RabbitListener 注解實現多個不同類型消息的處理示例代碼如下:

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 {@RabbitHandlerpublic void handleStringMessage(String message) {System.out.println("Received string message: " + message);// 處理字符串類型消息}@RabbitHandlerpublic void handleIntMessage(Integer message) {System.out.println("Received integer message: " + message);// 處理整數類型消息}
}

在這個示例中,我們創建了一個名為 MyMessageHandler 的類,并使用 @RabbitListener 注解標記整個類,指定監聽名為 “myQueue” 的隊列。然后,我們在類中定義了兩個處理消息的方法,分別使用 @RabbitHandler 注解標記,分別處理字符串類型和整數類型的消息。當不同類型的消息到達隊列時,根據消息類型調用對應的處理方法來處理消息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14426.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14426.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14426.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[數據集][目標檢測]狗臉檢測數據集VOC+YOLO格式6154張1類別

數據集格式:Pascal VOC格式YOLO格式(不包含分割路徑的txt文件,僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數):6154 標注數量(xml文件個數):6154 標注數量(txt文件個數):6154 標注…

【代碼隨想錄算法訓練營第37期 第十一天 | LeetCode20. 有效的括號、1047. 刪除字符串中的所有相鄰重復項、150. 逆波蘭表達式求值】

代碼隨想錄算法訓練營第37期 第十一天 | LeetCode20. 有效的括號、1047. 刪除字符串中的所有相鄰重復項、150. 逆波蘭表達式求值 一、20. 有效的括號 解題代碼C&#xff1a; class Solution { public:bool isValid(string s) {stack<char> stk;for(int i 0; s[i]; i )…

dpc++預研

1 基于oneAPI工具的加速圖像處理算法 2 使用英特爾oneAPI改進圖像處理中的邊緣檢測算法 3 初學DPC&#xff08;1&#xff09; 4 DpC(DpCpp)入門上手指南 5 英特爾oneAPI——統一編程模型和跨架構編程語言DPC詳細介紹與模板匹配算法實例 6 Intel DPC安裝與使用 7 如何看待…

如何查看mysql使用的內存

要查看MySQL使用的內存&#xff0c;我們可以通過多種方式來獲取相關信息。以下是幾種常見的方法&#xff0c;包括使用命令行工具、MySQL的系統變量以及查詢information_schema數據庫。 1. 使用SHOW STATUS命令 我們可以使用SHOW STATUS命令來查看MySQL服務器狀態&#xff0c;…

Winsock I/O 模型:性能和可擴展性的關鍵

目錄 引言 Select模型 簡介 主要特點 優點 缺點 工作原理 示例用法 WSAAsyncSelect異步I/O模型 簡介 工作原理 主要步驟 優點 缺點 示例代碼 WSAEventSelect事件選擇模型 簡介 工作原理 主要步驟 優點 缺點 示例代碼 重疊I/O模型 簡介 工作原理 主要優…

網絡編程 一

一、UDP socket api的使用 Java 把系統原生的封裝了. 核心的類有兩個: 1 -> DatagramSocket 操作系統中,有一類文件,就叫socket文件. socket文件,抽象表示了 " 網卡"這樣的硬件設備. 進行網絡通信最核心的硬件設備網卡 通過網卡發送數據,就是寫…

各手機品牌【短信收件箱數據庫列名】對比:inbox的column橫向對比

參考資料: https://blog.csdn.net/qq_35427437/article/details/85678647 https://www.cnblogs.com/bill-technology/p/4130917.html <font colorred>threads是存放會話的數據表&#xff0c;sms是存放短信的數據表&#xff0c;pdu是存放彩信的數據表</font> | 含義…

0基礎從前端到Web3 —— Mine Clearance Frontend(二)

在一的基礎上繼續往下&#xff0c;本篇主要是鏈上調用部分&#xff0c;讓整個項目可以進行最基本的掃雷游戲。 S u i M o v e \mathit {Sui\ Move} Sui Move 鏈上部署的自主實現的簡單掃雷游戲可以點擊查看&#xff0c;只不過這里將區域大小擴大為了 10 20 \text {10}\ \tim…

力扣Hot100-73矩陣置零(標記數組)

給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 示例 1&#xff1a; 輸入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 輸出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xff1a; 輸入&…

大模型面試--大模型(LLMs)基礎面

大模型&#xff08;LLMs&#xff09;基礎面 1. 目前主流的開源模型體系有哪些&#xff1f; 目前主流的開源大模型體系有以下幾種&#xff1a; 1. Transformer 系列 Transformer 模型是深度學習中的一類重要模型&#xff0c;尤其在自然語言處理&#xff08;NLP&#xff09;領…

JavaWeb Sevelet學習 創建Sevelet程序

Servlet 是JavaWeb中的開發動態Web一門技術 是由Sun公司提供的一個接口&#xff0c;允許開發者編寫運行在服務器&#xff08;Tomcat&#xff09;上的Java程序&#xff0c;這些程序可以 生成動態網頁內容&#xff0c; 響應客戶端的請求。簡單來說&#xff0c;Servlet就是Java E…

今日arXiv最熱大模型論文:LoRA又有新用途,學得少忘得也少,成持續學習關鍵!

自大模型&#xff08;LLM&#xff09;誕生以來&#xff0c;苦于其高成本高消耗的訓練模式&#xff0c;學界和業界也在努力探索更為高效的參數微調方法。其中Low-Rank Adaptation&#xff08;LoRA&#xff09;自其誕生以來&#xff0c;就因其較低的資源消耗而受到廣泛關注和使用…

Spring MVC八股文面試題及參考答案(4萬字長文)

目錄 什么是Spring MVC? 解釋MVC模式及其在Spring MVC中的實現。 Spring MVC和Struts的區別是什么?

瑞芯微RV1126——交叉編譯與移植

一、搭建這個nfs服務掛載 (1) sudo apt install nfs-kernel-server (2) 然后在你的ubuntu創建一個nfs共享目錄&#xff1a; (3) sudo /etc/init.d/nfs-kernel-server restart 重啟nfs服務 (4) 修改配置文件: sudo vim /etc/exports 在這個配置文件里面添加&#xff1a;/hom…

C語言/數據結構——每日一題(設計循環隊列)

一.前言 上一次我們分享了關于隊列的基本實現——https://blog.csdn.net/yiqingaa/article/details/139033067?spm1001.2014.3001.5502 現在我們將使用隊列知識來解決問題——設計循環隊列&#xff1a;https://leetcode.cn/problems/design-circular-queue/submissions/533299…

50.WEB滲透測試-信息收集-CDN識別繞過(3)

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a; 易錦網校會員專享課 上一個內容&#xff1a;49.WEB滲透測試-信息收集-CDN識別繞過&#xff08;2&#xff09; 關于cdn的識別方法內容…

Leecode熱題100--73:矩陣置零

題目&#xff1a; 給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 C&#xff1a; 思路&#xff1a; 可以使用兩個數組來記錄哪些行和列需要被置零。 首先&#xff0c;我們遍歷整個矩陣&#xff0c;…

設計模式--享元模式

引言 享元模式&#xff08;Flyweight Pattern&#xff09;作為一種高效節省內存的結構型設計模式&#xff0c;其核心在于通過共享技術有效支持大量細粒度對象的重用&#xff0c;從而減少內存占用&#xff0c;提高系統性能。特別是在處理大量相似對象的場景下&#xff0c;享元模…

智慧監獄人員行為識別監測系統

智慧監獄人員行為識別監測系統是基于神經網絡AI視覺智能分析算法開發的技術。智慧監獄人員行為識別監測系統利用現場監控攝像頭&#xff0c;通過對人體活動骨架的結構化分析&#xff0c;根據人體運動軌跡定義了多種異常行為&#xff0c;從而實現對監舍內的靜坐不動、離床、攀高…

Tron節點監控腳本使用說明

文章目錄 一、配置二、腳本編寫2.1 Python腳本--監控節點是否正在同步2.1.1 pyton腳本腳本示例2.1.2 使用說明2.2.3 腳本監控內容說明 2.2 Shell腳本--綜合情況監控2.2.1 shell腳本示例2.2.2 使用說明2.2.3 腳本監控內容說明 最近搭建了TRON節點&#xff0c;為了防止節點在生產…