RabbitMQ 快速上手:安裝配置與 HelloWorld 實踐(一)

一、引言

{"type":"load_by_key","key":"auto_image_0_0","image_type":"search"}

在當今分布式系統大行其道的技術浪潮下,各個服務之間的通信與協同變得愈發復雜。想象一下,一個電商系統在大促期間,訂單服務、庫存服務、支付服務、物流服務等眾多模塊需要緊密配合。如果沒有一種高效的通信機制,系統很容易陷入混亂,出現響應緩慢、數據不一致等問題。消息隊列,作為分布式系統中的關鍵組件,就像是一座橋梁,巧妙地連接起各個服務,讓它們能夠有條不紊地進行交互。

消息隊列能夠實現服務之間的解耦。比如在上述電商系統中,訂單服務產生訂單消息后,無需等待庫存服務、物流服務等立刻處理,而是將消息發送到消息隊列中,各服務可以根據自身的節奏從隊列中獲取消息進行處理。這樣一來,即使某個服務暫時出現故障或者負載過高,也不會影響其他服務的正常運行。同時,消息隊列還能應對高并發場景下的流量沖擊,起到削峰填谷的作用。在秒殺活動時,大量的訂單請求瞬間涌入,消息隊列可以將這些請求先存儲起來,然后按照系統能夠承受的速率逐步處理,避免系統因瞬間高并發而崩潰。

而 RabbitMQ,作為消息隊列領域的佼佼者,憑借其卓越的性能、豐富的功能和高可靠性,受到了廣大開發者的青睞。它基于 AMQP(高級消息隊列協議)實現,提供了靈活的消息路由機制、可靠的消息傳遞保障以及多種語言的客戶端支持。無論是小型創業項目,還是大型企業級應用,RabbitMQ 都能游刃有余地滿足各種消息隊列需求。接下來,就讓我們一起深入探索 RabbitMQ 的世界,從安裝配置開始,一步步實現經典的 HelloWorld 示例,開啟 RabbitMQ 的學習之旅。

二、RabbitMQ 是什么

RabbitMQ 是一個開源的消息代理和隊列服務器,基于 AMQP(高級消息隊列協議)實現 ,使用 Erlang 語言編寫。它在分布式系統或微服務架構中扮演著至關重要的角色,用于在不同的服務、應用程序組件之間進行輕量級的消息通信。

在實際應用場景中,RabbitMQ 有著廣泛的用途。以電商系統為例,當用戶下單后,訂單信息會作為消息發送到 RabbitMQ。訂單服務作為生產者,無需等待庫存服務、物流服務等同步處理訂單,而是將消息放入 RabbitMQ 的隊列中。庫存服務和物流服務作為消費者,可以根據自身的處理能力,從隊列中獲取訂單消息進行后續操作,如庫存扣減、安排物流配送等。這樣就實現了訂單服務與其他服務之間的解耦,提高了系統的靈活性和可維護性。

再比如在一個內容發布平臺中,當一篇新文章發布時,可能需要進行多種操作,如生成文章索引、發送推送通知給關注用戶、更新相關統計數據等。這些操作可以通過 RabbitMQ 進行異步處理。發布文章的操作作為生產者將消息發送到 RabbitMQ,各個相關的處理邏輯作為消費者從隊列中獲取消息并執行相應任務,從而加快了主業務流程的執行速度,提升了用戶體驗。

總的來說,RabbitMQ 的核心作用主要體現在以下幾個方面:

  • 應用解耦:降低不同服務或組件之間的依賴程度,使它們能夠獨立發展和演化。
  • 異步處理:將耗時的操作異步化,提高系統的響應速度和吞吐量。
  • 流量削峰:在高并發場景下,通過消息隊列暫存請求,避免系統因瞬間高流量而崩潰 。

三、安裝 RabbitMQ

3.1 前期準備

在安裝 RabbitMQ 之前,需要先安裝 Erlang 環境。因為 RabbitMQ 是基于 Erlang 開發的,兩者版本之間存在對應關系,在安裝時務必注意。你可以參考RabbitMQ?官方文檔關于版本對應關系的說明 ,來選擇合適的版本組合。例如,當安裝 RabbitMQ 3.10.16 時,建議搭配 Erlang/OTP 25.3 及以上版本。

Erlang 的下載地址為:https://www.erlang.org/downloads,根據你的操作系統類型(Windows、Linux 等)選擇對應的安裝包進行下載。

3.2 安裝 Erlang

Windows 系統
  1. 下載:從上述提供的 Erlang 下載地址,選擇適合 Windows 系統的安裝包,比如 64 位系統通常下載以 “otp_win64_” 開頭的安裝文件。
  1. 安裝:雙擊下載的安裝包,進入安裝向導界面。點擊 “Next”,選擇安裝路徑,默認路徑為 “C:\Program Files\erlXX.X”(XX.X 代表版本號),你也可以根據需求自定義路徑,然后繼續點擊 “Next” 完成后續安裝步驟。
  1. 配置環境變量:安裝完成后,需要配置環境變量。右鍵點擊 “此電腦”,選擇 “屬性”,點擊 “高級系統設置”,在彈出的窗口中點擊 “環境變量”。在 “系統變量” 區域,點擊 “新建”,變量名輸入 “ERLANG_HOME”,變量值為剛才安裝的 Erlang 路徑(如 “C:\Program Files\erlXX.X”)。接著找到 “Path” 變量,點擊 “編輯”,新建一項,輸入 “% ERLANG_HOME%\bin”,保存設置。
  1. 驗證安裝:打開命令提示符(CMD),輸入 “erl -version”,如果輸出 Erlang 的版本信息,則說明安裝成功。例如:“Erlang (ERTS 11.1.8)[64 - bit] [smp:8:8] [ds:8:8:10] [async - threads:1] Eshell V11.1.8 (abort with ^G)” 。
Linux 系統(以 CentOS 為例)
  1. 安裝依賴包:在安裝 Erlang 之前,需要先安裝一些依賴包,執行命令sudo yum install -y make gcc gcc - c++ kernel - devel m4 ncurses - devel openssl - devel 。這些依賴包為后續編譯安裝 Erlang 提供支持。
  1. 下載:通過命令行下載 Erlang 安裝包,如wget http://erlang.org/download/otp_src_XX.XX.tar.gz(XX.XX 代表版本號) 。
  1. 解壓:下載完成后,解壓安裝包,tar -zxvf otp_src_XX.XX.tar.gz ,進入解壓后的目錄cd otp_src_XX.XX 。
  1. 配置與編譯:執行./configure命令進行配置,配置完成后執行make && make install進行編譯和安裝。這個過程可能需要一些時間,根據服務器性能不同而有所差異。
  1. 配置環境變量:編輯/etc/profile文件,在文件末尾添加export PATH=$PATH:/usr/local/lib/erlang/bin ,然后執行source /etc/profile使配置生效。
  1. 驗證安裝:在命令行輸入 “erl”,如果進入 Erlang 的交互式環境,則說明安裝成功。例如出現 “Erlang/OTP XX [erts - XX.XX] [source] [64 - bit] Eshell VXX.XX (abort with ^G)” 字樣。

3.3 安裝 RabbitMQ

Windows 系統
  1. 下載:從 RabbitMQ 官方下載地址https://www.rabbitmq.com/download.html,下載適合 Windows 系統的安裝包,通常為.msi 后綴的文件。
  1. 安裝:雙擊下載的安裝包,按照安裝向導提示進行安裝,一路點擊 “Next” 即可,安裝過程中可以選擇安裝路徑等選項。
  1. 啟動服務:安裝完成后,打開命令提示符,進入 RabbitMQ 安裝目錄下的 sbin 文件夾(例如 “C:\Program Files\RabbitMQ Server\rabbitmq_server - XX.XX\sbin” ,XX.XX 為版本號) ,執行命令 “rabbitmq - server.bat start” 來啟動 RabbitMQ 服務。也可以將 RabbitMQ 服務設置為開機自啟,在命令提示符中執行 “sc create RabbitMQ binpath= "C:\Program Files\RabbitMQ Server\rabbitmq_server - XX.XX\sbin\rabbitmq - server.bat start" start= auto” 。
Linux 系統(以 CentOS 為例)
  1. 下載:使用命令wget https://github.com/rabbitmq/rabbitmq - server/releases/download/vXX.XX/rabbitmq - server - XX.XX - 1.el7.noarch.rpm(XX.XX 為版本號)下載安裝包。
  1. 安裝:下載完成后,執行命令sudo rpm -ivh rabbitmq - server - XX.XX - 1.el7.noarch.rpm進行安裝。安裝過程中可能會提示一些依賴關系,確保系統已安裝相關依賴。如果缺少依賴,可根據提示使用sudo yum install命令安裝相應的依賴包。
  1. 啟動服務:安裝完成后,使用命令sudo systemctl start rabbitmq - server啟動 RabbitMQ 服務。可以通過sudo systemctl status rabbitmq - server查看服務狀態,若顯示 “active (running)” 則表示服務已成功啟動。還可以設置開機自啟,執行sudo systemctl enable rabbitmq - server 。

3.4 開啟 Web 管理插件

安裝完成 RabbitMQ 后,默認的 Web 管理插件是關閉的,需要手動開啟。

  1. 開啟插件:在命令行中執行開啟 Web 管理插件的命令。在 Windows 系統下,進入 RabbitMQ 安裝目錄的 sbin 文件夾,執行rabbitmq - plugins.bat enable rabbitmq_management;在 Linux 系統下,執行sudo rabbitmq - plugins enable rabbitmq_management 。執行該命令后,系統會啟用 RabbitMQ 的 Web 管理插件,相關的插件如 mochiweb、webmachine 等也會一并啟用。
  1. 重啟服務:開啟插件后,需要重啟 RabbitMQ 服務,使配置生效。在 Windows 系統中,在命令提示符執行 “rabbitmq - server.bat restart”;在 Linux 系統中,執行sudo systemctl restart rabbitmq - server 。
  1. 訪問 Web 管理界面:重啟服務后,在瀏覽器中輸入 “http://localhost:15672/”(如果是遠程服務器,將localhost替換為服務器 IP 地址),即可訪問 RabbitMQ 的 Web 管理界面。默認的登錄賬號是 “guest”,密碼也是 “guest” 。不過,出于安全考慮,建議在生產環境中創建新的用戶并設置強密碼,同時限制 “guest” 用戶的訪問權限。例如,在 Linux 系統中,可以使用以下命令創建新用戶并設置權限:
    • 創建用戶:sudo rabbitmqctl add_user username password(將 username 和 password 替換為自定義的用戶名和密碼)。
    • 設置用戶角色為管理員:sudo rabbitmqctl set_user_tags username administrator 。
    • 設置用戶權限:sudo rabbitmqctl set_permissions -p "/" username ".*" ".*" ".*" 。

通過以上步驟,你已經成功安裝并配置了 RabbitMQ 及其 Web 管理插件,接下來就可以深入探索 RabbitMQ 的各種功能和使用場景了 。

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

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

相關文章

【deekseek】TCP Offload Engine

是的,TOE(TCP Offload Engine)通過專用硬件電路(如ASIC或FPGA)完整實現了TCP/IP協議棧,將原本由CPU軟件處理的協議計算任務完全轉移到網卡硬件中。其延遲極低的核心原因在于 硬件并行性、零拷貝架構 和 繞過…

JavaScript 的編譯與執行原理

文章目錄 前言🧠 一、JavaScript 編譯與執行過程1. 編譯階段(發生在代碼執行前)? 1.1 詞法分析(Lexical Analysis)? 1.2 語法分析(Parsing)? 1.3 語義分析與生成執行上下文 🧰 二…

WORD個人簡歷單頁326款模版分享下載

WORD個人簡歷模版下載:WORD個人簡歷模版https://pan.quark.cn/s/7e79a822c490

Android 中 顯示 PDF 文件內容(AndroidPdfViewer 庫)

PDFView 是一個用于在 Android 應用中顯示 PDF 文檔的庫。它提供了豐富的功能和靈活的配置選項,使得開發者能夠輕松地在應用中嵌入 PDF 閱讀器。 一、 添加依賴 在模塊的 build.gradle 文件中添加以下依賴: // pdfimplementation("com.github.bar…

微信小程序學習之搜索框

1、第一步&#xff0c;我們在index.json中引入vant中的搜索框控件&#xff1a; {"usingComponents": {"van-search": "vant/weapp/search/index"} } 2、第二步&#xff0c;直接在index.wxml中添加布局&#xff1a; <view class"index…

OpenCL C++ 常見屬性與函數

核心對象與屬性 對象/屬性描述示例cl::Platform表示OpenCL平臺cl::Platform::get(&platforms)cl::Device表示計算設備cl::Device::getDefault()cl::Context管理設備、內存和命令隊列的上下文cl::Context(contextDevices)cl::CommandQueue命令隊列,用于提交命令cl::Command…

Milvus 視角看重排序模型(Rerankers)

在信息檢索和生成式人工智能領域&#xff0c;重排序器是優化初始搜索結果順序的重要工具。重排序器與傳統的嵌入模型不同&#xff0c;它將查詢和文檔作為輸入&#xff0c;并直接返回相似度得分&#xff0c;而不是嵌入。該得分表示輸入查詢和文檔之間的相關性。 重排序器通常在…

C語言:gcc 如何調用 Win32 打開文件對話框 ?

在 Windows 平臺上使用 gcc 調用原生 Win32 API 實現文件打開對話框是可行的&#xff0c;但需要直接使用 Win32 的 GetOpenFileName 函數&#xff08;位于 commdlg.h 頭文件&#xff0c;依賴 comdlg32.lib 庫&#xff09;。以下是完整實現步驟和代碼示例&#xff1a; 編寫 file…

計算機視覺與深度學習 | Python實現EMD-SSA-VMD-LSTM時間序列預測(完整源碼和數據)

EMD-SSA-VMD-LSTM混合模型 一、環境配置與依賴二、數據生成&#xff08;示例數據&#xff09;三、多級信號分解1. 經驗模態分解&#xff08;EMD&#xff09;2. 奇異譜分析&#xff08;SSA&#xff09;3. 變分模態分解&#xff08;VMD&#xff09; 四、數據預處理1. 歸一化處理2…

vue配置子路由,實現點擊左側菜單,內容區域顯示不同的內容

文章目錄 一、路由鏈路二、實現步驟準備二級路由下的.vue文件配置子路由聲明router-view標簽為菜單項 el-menu-item 設置index屬性&#xff0c;設置點擊后的路由路徑 三、參考資料 一、路由鏈路 二、實現步驟 準備二級路由下的.vue文件 配置子路由 router/index.js import {…

ModuleNotFoundError: No module named ‘SDToolbox‘

(py311) C:>python Python 3.11.11 | packaged by Anaconda, Inc. | (main, Dec 11 2024, 16:34:19) [MSC v.1929 64 bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. from SDToolbox import PostShock_eq Tracebac…

Hi3516DV500刷寫固件

hi3516DV500刷固件 1、硬件連接 2、軟件準備 3、刷固件步驟 一、硬件連接 特別注意的是&#xff0c;串口的接線順序 通過網線連接好筆記本和開發板后&#xff0c;需要確認一下網口水晶頭是否閃爍&#xff0c;以確認網絡物理是否連通 二、軟件資源準備 固件包準備 打開工具…

正則表達式r前綴使用指南

正則表達式中的 r&#xff1a;解鎖字符串轉義的魔法 正則表達式是處理字符串的強大工具&#xff0c;但它常常伴隨著轉義字符的復雜性。如果你曾因 \n、\t 或 \\ 的使用而困惑&#xff0c;那么這篇文章將為你揭開謎底&#xff0c;解釋為什么 r 是正則表達式中的「神奇武器」。本…

網絡攻防模擬:城市安全 “數字預演”

在當今數字化快速發展的時代&#xff0c;網絡安全和城市安全面臨著前所未有的挑戰。為有效應對這些挑戰&#xff0c;利用先進的技術搭建模擬演練平臺至關重要。圖撲軟件的 HT for Web 技術&#xff0c;為網絡攻防模擬與城市安全演練提供了全面且高效的解決方案。 三維場景搭建&…

AI模型開發全流程筆記

一、訓練數據準備階段 數據采集標準 格式要求&#xff1a;嚴格QA對形式&#xff08;1問1答&#xff09; 數量基準&#xff1a; 基礎量&#xff1a;500組QA對 優化量&#xff1a;800-1000組QA對 內容規范&#xff1a; 聚焦單一業務節點&#xff08;如售后場景&#xff09; …

1688 數據接口調用秘籍:高效獲取商品實時信息的開發指南

在電商行業競爭白熱化的當下&#xff0c;企業想要搶占市場先機&#xff0c;實時掌握商品信息至關重要。作為國內 B2B 電商巨頭&#xff0c;1688 平臺匯聚海量商品資源&#xff0c;通過高效調用其數據接口獲取商品實時信息&#xff0c;能為企業價格策略制定、庫存管理、競品分析…

milvus學習筆記

本文主要由AI生成&#xff0c;請注意自己查看源代碼校驗。 Milvus v2.4 系統架構概覽 Milvus 采用分布式微服務架構&#xff0c;將計算層&#xff08;Proxy、QueryCoord、QueryNode、IndexCoord、DataCoord、DataNode 等&#xff09;與存儲層&#xff08;Pulsar、MinIO/S3、e…

使用教程:8x16模擬開關陣列可級聯XY腳雙向導通自動化接線

以下通過點亮LED進行基本使用流程演示&#xff0c;實際可以連接復雜外設&#xff08;SPI、CAN、ADC等&#xff09; 單模塊使用 RX、TX、5V和GND接到串口模塊&#xff1b;X5接5V&#xff1b;Y2接LED;LED-接GND 串口模塊插上電腦后&#xff0c;LED沒有亮&#xff1b;因為此時模…

HarmonyOS NEXT~鴻蒙應用上架指南:HarmonyOS應用發布全流程解析

HarmonyOS NEXT&#xff5e;鴻蒙應用上架指南&#xff1a;HarmonyOS應用發布全流程解析 引言 隨著華為鴻蒙操作系統(HarmonyOS)生態的快速發展&#xff0c;越來越多的開發者希望將自己的應用上架到鴻蒙應用市場。本文將詳細介紹鴻蒙應用上架的全流程&#xff0c;幫助開發者順…

20250517 我設想一個空間,無限大,空間不與其中物質進行任何作用,甚至這個空間能容納可以伸縮的空間

1.我設想一個空間&#xff0c;無限大&#xff0c;空間不與其中物質進行任何作用&#xff0c;甚至這個空間能容納可以伸縮的空間 您設想的這個空間具有一些有趣的特點&#xff1a; 無限大&#xff1a;空間本身沒有邊界或限制&#xff0c;理論上可以容納無限多的物質或結構。非…