微服務學習(2):實現SpringAMQP對RabbitMQ的消息收發

目錄

SpringAMQP是什么

為什么采用SpringAMQP

SpringAMQP應用

準備springBoot工程

實現消息發送


SpringAMQP是什么

Spring AMQP是Spring框架下用于簡化AMQP(高級消息隊列協議)應用開發的一套工具集,主要針對RabbitMQ等消息中間件的集成。它提供了基于模板的消息發送和接收方法(如AmqpTemplate),以及用于配置和管理交換機、隊列及其綁定關系的機制。通過Spring AMQP,開發者可以方便地將消息隊列功能整合到Spring項目中。

為什么采用SpringAMQP

將來我們開發業務功能的時候,肯定不會在控制臺收發消息,而是應該基于編程的方式。RabbitMQ官方提供的Java客戶端編碼相對復雜,一般生產環境下我們更多會結合Spring來使用。而Spring的官方剛好基于RabbitMQ提供了這樣一套消息收發的模板工具:SpringAMQP。并且還基于SpringBoot對其實現了自動裝配,使用起來非常方便。

SpringAMQP提供了三個功能:

1.自動聲明隊列、交換機及其綁定關系

2.基于注解的監聽器模式,異步接收消息

3.封裝了RabbitTemplate工具,用于發送消息

SpringAMQP應用

準備springBoot工程

新建一個springboot工程,包括三部分:

  • mq-demo:父工程,管理項目依賴

  • publisher:消息的發送者

  • consumer:消息的消費者

工程目錄如圖所示:

pom.xml文件導入依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.itcast.demo</groupId><artifactId>mq-demo</artifactId><version>1.0-SNAPSHOT</version><modules><module>publisher</module><module>consumer</module></modules><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/></parent><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--AMQP依賴,包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><!--單元測試--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies>
</project>

如此,子工程中就可以直接使用SpringAMQP。

實現消息發送

首先配置MQ地址,在publisher服務的application.yml和consumer服務的application.yml中添加配置:

spring:rabbitmq:host: 192.168.12.101 # 你的虛擬機IPport: 5672 # 端口virtual-host: /user # 你的虛擬主機username: user # 用戶名password: 123 # 密碼

然后在publisher服務中編寫測試類SpringAmqpTest,并利用RabbitTemplate實現消息發送:

@SpringBootTest
class SpringAmqpTest {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void testSimpleQueue() {// 隊列名稱String queueName = "hello.queue";// 消息String message = "hello rabbitmq";// 發送消息rabbitTemplate.convertAndSend(queueName, message);}
}

運行后,打開控制臺,可以看到消息已經發送到隊列中:

當然,我們可以在consumer服務的consumer.listener包中新建一個類SpringRabbitListener來接收,代碼如下:

@Component
@Slf4j
public class SpringRabbitListener {@RabbitListener(queues = "hello.queue")public void listenSimpleQueue(String msg) {log.info("消費者收到消息:{}", msg);}
}

啟動ConsumerApplication,控制臺顯示如下:

解讀:實現SpringAMQP對RabbitMQ的消息收發的測試。

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

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

相關文章

AI人工智能機器學習之神經網絡

1、概要 本篇學習AI人工智能機器學習之神經網絡&#xff0c;以MLPClassifier和MLPRegressor為例&#xff0c;從代碼層面講述最常用的神經網絡模型MLP。 2、神經網絡 - 簡介 在 Scikit-learn 中&#xff0c;神經網絡是通過 sklearn.neural_network 模塊提供的。最常用的神經網…

WPF高級 | WPF 與數據庫交互:連接、查詢與數據更新

WPF高級 | WPF 與數據庫交互&#xff1a;連接、查詢與數據更新 前言一、數據庫交互基礎概念1.1 數據庫簡介1.2 數據訪問技術 二、WPF 與數據庫連接2.1 連接字符串2.2 建立連接 三、WPF 中的數據查詢3.1 使用ADO.NET進行數據查詢3.2 使用 Entity Framework 進行數據查詢3.3 使用…

【ESP32S3接入訊飛在線語音識別】

【ESP32S3接入訊飛在線語音識別】 1. 前言1.1 步驟概括1.2 硬件介紹1.3 接線2. 操作流程2.1 創建語音識別應用2.2 記錄API秘鑰3. JSON語音接入api3.1 JSON格式3.2 交互流程3.2 ESP32S3 Sense接入代碼1. 核心功能2. 主要模塊3. 工作流程4. 典型應用場景5. 關鍵技術點6. 待完善功…

學生管理前端

文章目錄 首頁student.html查詢功能 首頁 SpringBoot前端html頁面放在static文件夾下&#xff1a;/src/main/resources/static 默認首頁為index.html&#xff0c;我們可以用兩個超鏈接或者兩個button跳轉到對應的頁面。這里只是單純的跳轉頁面&#xff0c;不需要提交表單等其…

(動態規劃 最長遞增的子序列)leetcode 300

這道題我第一眼反應就是暴力&#xff0c;但是暴力的話就是n*n-1*n-2*...n-(n-1) 也就是O(n^n)dfs做絕對超時 貪心也不行&#xff0c;這里是子序列&#xff0c;要考慮在ni的范圍內考慮多種路線取最優&#xff0c;所以用動態規劃 如何用動態規劃呢&#xff1f; 答&#xff1a;…

RabbitMQ系列(六)基本概念之Routing Key

在 RabbitMQ 中&#xff0c;Routing Key&#xff08;路由鍵&#xff09; 是用于將消息從交換機&#xff08;Exchange&#xff09;路由到指定隊列&#xff08;Queue&#xff09;的關鍵參數。其核心作用是通過特定規則匹配綁定關系&#xff0c;確保消息被正確分發。以下是其核心機…

Spark內存并行計算框架

spark核心概念 spark集群架構 spark集群安裝部署 spark-shell的使用 通過IDEA開發spark程序 1. Spark是什么 Apache Spark? is a unified analytics engine for large-scale data processingspark是針對于大規模數據處理的統一分析引擎 spark是在Hadoop基礎上的改進&…

Ubuntu 安裝 Nginx并配置反向代理

Ubuntu版本&#xff1a;Ubuntu 24.04.2 LTS 一、安裝Nginx ?更新系統軟件包? 安裝前需確保系統處于最新狀態&#xff0c;避免依賴沖突 sudo apt update && sudo apt upgrade -y ?安裝Nginx主程序? Ubuntu官方倉庫已包含穩定版Nginx&#xff0c;直接安裝即可 sudo…

Solr中得Core和Collection的作用和關系

Solr中得Core和Collection的作用和關系 一&#xff0c; 總結 在Apache Solr中&#xff0c;Core和Collection 是兩個核心概念&#xff0c;他們分別用于單機模式和分布式模式&#xff08;SolrCloud&#xff09;中&#xff0c;用于管理和組織數據。 二&#xff0c;Core 定義&am…

yolov8,yolo11,yolo12 服務器訓練到部署全流程 筆記

正在進行中&#xff0c;隨時更新 一. Anaconda配置 1.安裝anaconda (1)下載.sh文件 Index of /anaconda/archive/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror (2)scp到服務器后&#xff0c;運行安裝包 bash Anaconda3-2020.07-Linux-x86_64.sh (3)安裝anacond…

從零開始開發純血鴻蒙應用之語音朗讀

從零開始開發純血鴻蒙應用 〇、前言一、API 選型1、基本情況2、認識TextToSpeechEngine 二、功能集成實踐1、改造右上角菜單2、實現語音播報功能2.1、語音引擎的獲取和關閉2.2、設置待播報文本2.3、speak 目標文本2.4、設置語音回調 三、總結 〇、前言 中華漢字洋洋灑灑何其多…

【AGI】DeepSeek開源周:The whale is making waves!

DeepSeek開源周&#xff1a;The whale is making waves&#xff01; 思維火花引言一、DeepSeek模型體系的技術演進1. 通用語言模型&#xff1a;DeepSeek-V3系列2. 推理優化模型&#xff1a;DeepSeek-R1系列3. 多模態模型&#xff1a;Janus系列 二、開源周三大工具庫的技術解析1…

25年前端如何走的更穩

2025年&#xff0c;隨著deepseek引起的AI大模型技術的深度革命&#xff0c;帶來了很多機會和挑戰&#xff0c;前端程序員作為互聯網里一個普通但必不可少的崗位&#xff0c;在當前形勢下&#xff0c;需要主動變革才能走的更穩。本文簡單介紹三個方向&#xff0c;Web3前端、全棧…

DockerでOracle Database 23ai FreeをセットアップしMAX_STRING_SIZEを拡張する手順

DockerでOracle Database 23c FreeをセットアップしMAX_STRING_SIZEを拡張する手順 はじめに環境準備ディレクトリ作成Dockerコンテナ起動 データベース設定変更コンテナ內でSQL*Plus起動PDB操作と文字列サイズ拡張設定検証 管理者ユーザー作成注意事項まとめ はじめに Oracle…

市場加速下跌,但監管「堅冰」正在消融

作者&#xff1a;Techub 熱點速遞 撰文&#xff1a;Yangz&#xff0c;Techub News 與近日氣溫逐步回暖不同&#xff0c;自 2 月 25 日比特幣跌破 9 萬美元以來&#xff0c;加密貨幣市場行情一路下滑。今日 10 時 50 分左右&#xff0c;比特幣更是跌破 8 萬美元大關&#xff0c…

【Android】安卓付款密碼輸入框、支付密碼輸入框

如圖 代碼部分&#xff1a; public class PayPasswordDialog extends AppCompatDialogFragment {private String mPayPass "";private String mTitle, mMoney;private final TextView[] mPayPassTextViewArray new TextView[6];private List<Integer> mPayP…

Java數據結構_一篇文章了解常用排序_8.1

本文所有排序舉例均默認為升序排列。 目錄 1. 常見的排序算法 2. 常見排序算法的實現 2.1 插入排序 2.1.1 基本思想&#xff1a; 2.1.2 直接插入排序 2.1.3 希爾排序&#xff08;縮小增量排序&#xff09; 2.2 選擇排序 2.2.1 基本思想&#xff1a; 2.2.2 直接選擇排…

性能調優篇——索引優化與執行計劃解析

引言 當數據庫表數據突破千萬級時&#xff0c;一個未優化的索引可能讓查詢耗時從毫秒級暴增至分鐘級。某電商平臺曾因商品搜索接口的索引缺失&#xff0c;導致大促期間數據庫CPU飆升至98%&#xff0c;直接引發服務雪崩。本文將深入B樹索引的存儲奧秘&#xff0c;詳解慢查詢日志…

計算機畢業設計SpringBoot+Vue.js人口老齡化社區服務與管理平臺 (源碼+文檔+PPT+講解)

溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 作者簡介&#xff1a;Java領…

C#上位機--三元運算符

引言 在 C# 上位機開發中&#xff0c;我們經常需要根據不同的條件來執行不同的操作。條件判斷是編程中不可或缺的一部分&#xff0c;而三元運算符就是一種簡潔而強大的條件判斷工具。本文將詳細介紹 C# 中的三元運算符&#xff0c;探討其在上位機開發中的應用場景&#xff0c;…