【RabbitMQ】----初識 RabbitMQ

1. MQ 是什么?

在互聯網中,會經常使用 MQ 來作為消息通信服務,我們一起來看一下什么是 MQ 吧!

1.1 MQ 本質

MQ】(Message queue),消息隊列,字面意思來看,本質是一個隊列,FIFO先進先出,但這里的消息隊列,只不過隊列中存放的是消息,消息可以非常簡單,也可以非常復雜

1.2 系統間通信

MQ?多用于分布式系統之間進行通信(系統通信,相當于數據傳輸)

這里補充介紹一下,系統之間的調用通常有兩種方式:

  • 同步通信:直接調用對方的服務,數據從一端發出后立即就可以到達另一端

  • 異步通信:數據從一端發出后,先進入一個容器進行臨時存儲,當達到某種條件后,再由這個容器發送給另一端(這個容器的一個具體實現就是MQ)

2. MQ的作用是什么?

MQ 的工作是:接收并轉發消息

可以把 MQ 消息隊列想象成一個倉庫,采購部門進貨之后,把貨物放在倉庫里,生產部門從倉庫中取出零件,并加工成產品,這樣類比,可能更幫助我們理解,倉庫放的是物品, MQ 放的是消息,倉庫負責存儲物品,并轉發物品,同樣的,MQ 負責存儲和轉發消息

2.1 異步解耦

在一些業務流程中,一些操作可能會非常耗時,但并不需要即時返回結果,可以借助 MQ 把這些操作異步化(可回顧這期內容,介紹了解耦等名詞【多線程】阻塞隊列,解耦,就是依賴關系減弱)

舉一個栗子,比如在用戶注冊的使用,有以下三個事情需要做:
1)用戶信息校驗
2)插入數據庫(其實這個操作,用戶的數據就已經在數據庫了)
3)發送郵件(告訴用戶,比如,恭喜你,注冊成功等類似信息)

2.2 流量削峰

在訪問量劇增的情況下,應用仍然需要繼續發揮作用,但是這樣的突發流量并不常見,如果以能處理這類峰值為標準而投入資源,這無疑是巨大的資源浪費,使用 MQ 能夠使關鍵組件支撐突發訪問壓力,不會因為突發流量而崩潰,比如秒殺活動或者促銷活動,可以使用 MQ 來控制流量,將請求排隊,系統再根據自己的處理能力逐步處理這些請求,使請求是平緩的速度,而不是猛增猛降

2.3 消息分發

多個系統需要對同一數據做出響應的時候,可以使用 MQ 進行消息分發,比如支付成功之后,支付系統可以向 MQ 發送消息,其它系統訂閱該消息,而不需要輪詢數據庫

舉一個栗子,比如在購物的時候,下單成功,有以下幾個事情需要做:
1)向商家發送通知
2)向平臺財務部門發送通知

2.4 延遲通知

需要在特定時間后發送通知的場景中,可以使用 MQ 的延遲消息功能,比如,在電子商務平臺中,如果用戶下單后一定時間內未支付,可以使用延遲隊列在超時后自動取消訂單(可以把 MQ 想象一個倉庫,暫時存儲了這些消息,到一定時候進行轉發~)

2.5 日志處理

MQ 消息隊列還可以用于日志處理,例如,Kafka?等消息隊列中間件可以接收并存儲大量的日志數據,供日志處理應用進行訂閱和消費,通過這種方式可以簡化日志處理的架構,提高日志處理的效率和可靠性

3. 為什么選擇 RabbitMQ?

RabbitMQ的綜合能力較強,并且我們的項目沒有那么那么大的高并發,RabbitMQ 社區比較活躍,同時RabbiMQ 管理界面友好,因此,本專欄學習 MQ 選擇了 RabbitMQ ,小伙伴們~接下來我們主要一起來學習RabbitMQ的使用。

4. RabbitMQ 是什么?

可以通過?RabbitMQ 官網,更進一步了解

RabbitMQ 是采用?Erlang?語言實現AMQP(Advanced Message Queuing Protocol)高級消息隊列協的消息中間件,它最初起源于金融系統領域,為了在分布式系統中存儲和轉發消息設計的~

💛💛💛本期內容回顧💛💛💛

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

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

相關文章

深度學習:歸一化技術

在深度學習中,歸一化技術是提高模型訓練效率和性能的重要手段。歸一化通過調整輸入數據的分布,使得模型在訓練過程中更易于收斂,減少過擬合的風險。本文將介紹幾種常見的歸一化技術,包括特征歸一化、批歸一化、層歸一化和實例歸一…

【Javaweb學習|實訓總結|Week1】html基礎,CSS(選擇器、常用樣式、盒子模型、彈性盒布局、CSS定位、動畫),js(基本類型、運算符典例)

開學前三周先進行企業實訓,主要學習Javaweb并實現一些小的項目,本篇筆記主要記錄第一周實訓的知識總結以及個人遇到的問題及解答,用于日后復習回顧和知識鞏固,希望可以幫到同樣在學Javaweb的大家 文章目錄D1html基礎D2塊元素與行…

SQL 拓展指南:不同數據庫差異對比(MySQL/Oracle/SQL Server 基礎區別)

在學習 SQL 的過程中,你可能會發現:同樣的 “建表語句” 在 MySQL 能運行,在 Oracle 卻報錯;“分頁查詢” 的寫法在 SQL Server 和 MySQL 完全不同。這是因為 MySQL、Oracle、SQL Server 是三大主流關系型數據庫,雖都支…

論文閱讀:DMD | Improved Distribution Matching Distillation for Fast Image Synthesis

論文地址:https://arxiv.org/abs/2405.14867 項目官網:https://tianweiy.github.io/dmd2/ 代碼地址:https://github.com/tianweiy/DMD2 發表時間:2024年5月24日 分布匹配蒸餾(DMD)生成的一步生成器能夠與教…

嵌入式 Linux 啟動流程詳解 (以 ARM + U-Boot 為例)

嵌入式 Linux 啟動流程詳解 (以 ARM U-Boot 為例) 對于嵌入式開發者而言,深入理解系統的啟動流程至關重要。這不僅有助于進行底層驅動開發和系統移植,還能在遇到啟動失敗等問題時,快速定位和解決。本文將詳細分解基于 ARM 架構的嵌入式 Linu…

在前端開發中,html中script 的type分別有哪幾種?分別什么情況用到?

以下是 HTML 中<script>標簽type屬性的常見取值、說明及使用場景&#xff1a;type 值說明使用場景不寫&#xff08;空值&#xff09;HTML5 中默認等同于text/javascript&#xff0c;表示普通 JavaScript 腳本絕大多數傳統 JavaScript 代碼&#xff0c;包括內聯腳本和外部…

2025職教技能大賽汽車制造與維修賽道速遞-產教融合實戰亮劍?

各位職教同仁&#xff0c;2025年世界職業院校技能大賽總決賽爭奪賽&#xff08;汽車制造與維修賽道&#xff09;國內賽區的戰報新鮮出爐&#xff01;本次大賽以“技炫青春 能創未來”為主題&#xff0c;聚焦汽車產業鏈高質量發展需求&#xff0c;在真實場景中比拼技能&#xff…

日志 | Spring Boot 日志配置通用規律(AI問答)

Spring Boot 日志配置通用規律。想看特定日志&#xff0c;怎么打開日志開關 文章目錄一、一句話總結二、AI問答版提問詞AI的響應&#x1f4ca; Spring Boot 日志配置通用規律1. 基本語法結構2. 日志級別&#xff08;從詳細到簡潔&#xff09;&#x1f3af; 常用日志配置分類1. …

DJANGO后端服務啟動報錯及解決

1.報錯信息[2025-09-05 17:08:54 0800] [23438] [INFO] Worker exiting (pid: 23438) [2025-09-05 17:08:54 0800] [23440] [ERROR] Exception in worker process Traceback (most recent call last):File "/www/SOP/lib64/python3.11/site-packages/gunicorn/arbiter.py&…

Qt 中的 Q_OBJECT 宏詳解 —— 從源碼到底層機制的全面剖析

Qt 中的 Q_OBJECT 宏詳解 —— 從源碼到底層機制的全面剖析 文章目錄Qt 中的 Q_OBJECT 宏詳解 —— 從源碼到底層機制的全面剖析摘要一、Q_OBJECT 宏是什么&#xff1f;二、Q_OBJECT 宏背后的源碼三、moc 工具的作用四、信號與槽調用流程五、沒有 Q_OBJECT 會怎樣&#xff1f;六…

GD32自學筆記:5.定時器中斷

定時器中斷功能主要是兩點&#xff1a;1.怎么配置的定時器中斷時間間隔&#xff1b;2.中斷里長什么樣一、定時器中斷配置函數直接在bsp_basic_timer.c里找到下面函數&#xff1a;void basic_timer_config(uint16_t pre,uint16_t per) {/* T 1/f, time T * pre,pertime (pre …

[Godot入門大全]目錄

1 免責聲明 資源分享免責聲明&#xff1a; 本平臺/本人所分享的各類資源&#xff08;包括但不限于文字、圖片、音頻、視頻、文檔等&#xff09;&#xff0c;均來源于公開網絡環境中的可分享內容或已獲授權的傳播素材。 本平臺/本人僅出于信息交流、資源共享之目的進行傳播&…

使用 StringRedisTemplate 實現 ZSet 滾動查詢(處理相同分數場景)

1. 為什么需要改進當 ZSet 中存在相同分數 (score) 的元素時&#xff0c;單純使用分數作為偏移會導致數據漏查或重復。例如&#xff1a;多條記錄具有相同時間戳&#xff08;作為分數&#xff09;分頁查詢時可能跳過相同分數的元素或重復查詢相同分數的元素改進方案&#xff1a;…

【Android】安裝2025版AndroidStudio開發工具開發老安卓舊版App

為了開發老舊的安卓App&#xff0c;這里記錄一下2025版AndroidStudio的安裝過程&#xff0c;如果卸載以后&#xff0c;可以按照此文章的步驟順利重新安裝繼續使用。 文章目錄安裝包Android SDK新建項目新建頁面構建項目Gradle下載失敗構建失敗構建完成編譯失敗安裝失敗關于APP在…

Python跳過可迭代對象前部元素完全指南:從基礎到高并發系統實戰

引言&#xff1a;跳過前部元素的核心價值在數據處理和系統開發中&#xff0c;跳過可迭代對象的前部元素是常見且關鍵的操作。根據2024年數據處理報告&#xff1a;92%的數據清洗需要跳過文件頭部85%的日志分析需要忽略初始記錄78%的網絡協議處理需跳過頭部信息65%的機器學習訓練…

ConcurrentHashMap擴容機制

ConcurrentHashMap的擴容為了提高效率&#xff0c;是多線程并發的每個線程控制一部分范圍節點的擴容(根據cpu與數組長度確定控制多大范圍)有兩個核心參數sizeCtl&#xff1a;標記擴容狀態 負數時代表正在擴容&#xff0c;存儲量參與擴容的線程數&#xff0c;正數代表出發擴容的…

Spring Cloud Gateway 進行集群化部署

如果將 Gateway 單獨部署為一個服務而不做任何高可用處理&#xff0c;它確實會成為一個單點故障&#xff08;SPOF, Single Point of Failure&#xff09;。如果這個唯一的 Gateway 實例因為服務器宕機、應用崩潰、部署更新或其他任何原因而不可用&#xff0c;那么整個系統的所有…

計算機網絡:以太網中的數據傳輸

以太網中&#xff0c;數據的傳輸依賴于一系列標準化的技術規范&#xff0c;核心包括幀結構封裝、介質訪問控制機制和物理層編碼技術&#xff0c;具體如下&#xff1a; 1. 以“幀&#xff08;Frame&#xff09;”為基本傳輸單元 以太網在數據鏈路層將網絡層的數據包&#xff08;…

元器件--USB TypC接口

USB TypC接口下圖這些都是USB接口A口與B口的區別USB A口和B口最初由USB-IF在1996年引入。根據當時的USB協議&#xff0c;A口主要用于主設備&#xff08;如電腦&#xff09;&#xff0c;而B口則用于從設備&#xff08;如打印機和攝像頭&#xff09;。隨著USB-C接口的日益普及&am…

多線程之HardCodedTarget(type=OssFileClient, name=file, url=http://file)異常

多線程之HardCodedTarget(typeOssFileClient, namefile, urlhttp://file)異常 摘要&#xff1a; 文檔描述了多線程環境下調用Feign客戶端OssFileClient時出現的HardCodedTarget異常。異常發生在異步保存文件到ES時&#xff0c;Feign調用未返回預期結果而直接打印了客戶端對象。…