RocketMQ介紹 RocketMQ是一款由阿里巴巴開源的分布式消息中間件。它具有低延遲、高吞吐量、高可用性和高可靠性等特點,適用于構建具有海量消息堆積和異步解耦功能的應用系統(tǒng)。
1.1.基本概念 ? 生產者(Producer):也稱為消息發(fā)布者,是RocketMQ中用來構建并傳輸消息到服務端的運行實體。 ? 主題(Topic):Topic是RocketMQ中消息傳輸和存儲的頂層容器,用于標識同一類業(yè)務邏輯的消息;Topic是一個邏輯概念,并不是實際的消息容器; ? 消息隊列(MessageQueue):隊列是RocketMQ中消息存儲和傳輸的實際容器,也是消息的最小存儲單元。 ? 消費者(Consumer):也稱為消息訂閱者,是RocketMQ中用來接收并處理消息的運行實體。 ? 消費者組(ConsumerGroup):消費者組是RocketMQ中承載多個消費行為一致的消費者負載均衡分組。和消費者不同,消費者組是一個邏輯概念。 ? NameServer:可以理解成注冊中心,負責更新和發(fā)現(xiàn)Broker服務。在NameServer的集群中,NameServer與NameServer之間是沒有任何通信的,它是無狀態(tài)的。 ? Broker:可以理解為消息中轉角色,負責消息的存儲和轉發(fā),接收生產者產生的消息并持久化消息;當用戶發(fā)送的消息被發(fā)送到Broker時,Broker會將消息轉發(fā)到與之關聯(lián)的Topic中,以便讓更多的接收者進行處理。 1.2消息模型
1.3.部署模型
2.下載RocketMQ RocketMQ的官網地址:https://rocketmq.apache.org/ Github地址:https://github.com/apache/rocketmq 下載地址:https://rocketmq.apache.org/zh/download/ 當前最新的版本為5.1.0,本教程安裝5.1.0版本。
3.安裝RocketMQ 3.1.安裝前需要準備一個CentOS7的Linux機器,使用的Linux版本如下: uname -a
3.2.安裝JDK 推薦使用JDK1.8版本。可以使用課件資料包或者自行下載tar.gz包。
1.統(tǒng)一規(guī)劃目錄,創(chuàng)建app文件夾,在創(chuàng)建jdk文件夾,將jdk的包上載到 /app/jdk目錄下然后解壓 cd .. mkdir app cd app/ mkdir jdk cd jdk/ tar -zxvf jdk-8u171-linux-x64.tar.gz
2.配置jdk環(huán)境變量,將JAVA_HOME變量加上;將path路徑替換成相應配置 vi /etc/profile # jdk解壓后的目錄路徑 export JAVA_HOME=/app/jdk/jdk1.8.0_171/ PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
3.更新配置并查看jdk版本,顯示以下信息則安裝成功。 source /etc/profile java -version
3.3.安裝RocketMQ 3.3.1.將安裝包上傳到/app/rocketMQ目錄下 # 先在app目錄下創(chuàng)建rocketMQ文件夾 cd .. mkdir rocketMQ # 上傳到/app/rocketMQ目錄然后解壓(也可以先解壓在上傳,推薦上傳后解壓) cd rocketMQ/ unzip rocketmq-all-5.1.0-bin-rease.zip
3.3.2 配置rocketMQ環(huán)境變量 # 將ROCKETMQ_HOME變量加上,在path路徑加上 $ROCKETMQ_HOME /bin: vi /etc/profile # rocketMQ路徑 export ROCKETMQ_HOME=/app/rocketMQ/rocketmq-all-5.1.0-bin-rease export PATH=$ROCKETMQ_HOME/bin:JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin # namesrc后續(xù)broker會使用到,先加上 export NAMESRC_ADDR='woker1:9876;worker2:9876;worker3:9876'
3.3.3 更新配置 source /etc/profile
ROCKETMQ_HOME的環(huán)境變量是必須要單獨配置的,如果不配置的話,啟動NameSever和Broker都會報錯。這個環(huán)境變量的作用是用來加載$ROCKETMQ_HOME/conf下的除broker.conf以外的幾個配置文件。所以實際情況中,可以不按這個配置,但是一定要能找到配置文件。這樣RocketMQ就安裝完成了。
3.4.RocketMQ工作原理 官網5.0版本速覽鏈接:https://rocketmq.apache.org/zh/version/
RocketMQ5.0 引入了全新的彈性無狀態(tài)代理模式,將當前的Broker職責進行拆分,對于客戶端協(xié)議適配、權限管理、消費管理等計算邏輯進行抽離,獨立無狀態(tài)的代理角色提供服務,Broker則繼續(xù)專注于存儲能力的持續(xù)優(yōu)化。值得注意的是RocketMQ 5.0的全新模式是和4.0的極簡架構模式相容相通的,5.0的代理架構完全可以以Local模式運行,實現(xiàn)與4.0架構完全一致的效果。開發(fā)者可以根據自身的業(yè)務場景自由選擇架構部署,本教程也是部署的Local模式。
RocketMQ啟動流程如下:
3.5 NameServer服務搭建 啟動NameServer非常簡單,在$ROCKETMQ_HOME/bin目錄下有個mqnamesrv。直接執(zhí)行這個腳本就可以啟動RocketMQ的NameServer服務。 由于RocketMQ默認預設的JVM內存是4G,這是RocketMQ給我們的最佳配置。但是通常我們用虛擬機的話都是不夠4G內存的,所以需要調整下JVM內存大小。修改的方式是直接修改runserver.sh。
3.5.1 修改NameServer啟動配置 cd rocketmq-all-5.1.0-bin-release/bin/ vi runserver.sh # 將JAVA_OPT= " ${JAVA_OPT} -Server-Xms4g -Xmx4g -Xmn2g 修改為 -server Xms512m -Xmx512m -Xmn256m"
3.5.2 啟動NameServer NameServer的配置修改完成,然后我們用靜默啟動的方式啟動NameServer服務,啟動完成后在nohup.out里看到這一條關鍵日志就是啟動成功。并且使用jps指令可以看到有一個NamesrvStartup進程。
# 靜默啟動 nohup ./mqnamesrc & # 查看日志 tail -f nohup.out
3.6 Broker服務搭建 啟動Broker的腳本是runbroker.sh。Broker的默認預設內存是8G,啟動前,如果內存不夠,同樣需要調整下JVM內存。修改的方式是直接修改runbroker.sh。
3.6.1 修改broker啟動腳本配置 vi runbroker.sh # 將JAVA_OPT= " ${JAVA_OPT} -server Xms8g -Xmx8g" 修改為JAVA_OPT= " ${JAVA_OPT} -server Xms512m -Xmx512m"
3.6.2 修改broker配置文件 # 修改Broker資源配置文件,允許自動創(chuàng)建Topic cd ../conf/ vi broker.conf # 允許自動創(chuàng)建topic autoCreateTopicEnable=true # 添加nameserver地址 namesrvAddr=localhost:9876
3.6.3 啟動broker服務 Broker的配置修改完成,然后我們用靜默啟動的方式啟動Broker服務,同樣是檢查nohup.out日志, 并且jps指令可以看到一個BrokerStartup進程。
1.回到bin目錄下,靜默啟動Broker cd ../bin nohup ./mqbroker -c ../conf/broker.conf & 2.查看日志,顯示如下即顯示成功********每次啟動broker時都要關注是否注冊到目標nameserver上(name server isworker:9876) tail -f nohup.out jps
3.7 測試RocketMQ消息發(fā)送與消費 在RocketMQ的安裝包中,提供了一個tools.sh工具可以用來在命令行快速驗證RocketMQ服務。
1.我們在bin錄下執(zhí)行以下命令測試消息發(fā)送,默認會發(fā)1000條消息,發(fā)送完成自動關閉 export NAMESRV_ADDR=‘localhost:9876’ ./tools.sh org.apache.rocketmq.example.quickstart.Producer
2.出現(xiàn)以下提示則代表消息發(fā)送成功
3 執(zhí)行一下命令測試消息接收,Consumer執(zhí)行不會自動關閉,會一直掛起等待新消息過來 export NAMESRV_ADDR=‘localhost:9876’ ./tools.sh org.apache.rocketmq.example.quickstart.Consumer
4 出現(xiàn)以下提示則代表消息接收成功
3.8 關閉RocketMQ服務 在bin目錄下通過腳本關閉服務
1 關閉Broker sh ./mqshutdown broker
2 關閉NameServer sh ./mqshutdown namesrv
3 查看服務
?
閱讀原文:https://mp.weixin.qq.com/s/NyBCC2E3EfCEuHRuGFtTiw
該文章在 2025/7/22 10:57:19 編輯過