一、簡介
消息隊列中間件是分布式系統(tǒng)中的重要組件,主要解決應(yīng)用耦合、流量削峰等問題,目前主流的 MQ 主要是:RocketMQ、kafka、RabbitMQ等。
RocketMQ 相較于其它 MQ 的優(yōu)勢:
- 支持事務(wù)型消息(消息發(fā)送和 DB 操作保持兩方的最終一致性,RabbitMQ 和 Kafka 不支持)
- 支持結(jié)合 RocketMQ 的多個系統(tǒng)之間數(shù)據(jù)最終一致性(多方事務(wù),二方事務(wù)是前提)
- 支持 18 個級別的延遲消息(Kafka 不支持)
- 支持指定次數(shù)和時間間隔的失敗消息重發(fā)(Kafka 不支持,RabbitMQ 需要手動確認(rèn))
- 支持 Consumer 端 Tag 過濾,減少不必要的網(wǎng)絡(luò)傳輸(即過濾由MQ完成,而不是由消費者完成。RabbitMQ 和 Kafka 不支持)
- 支持重復(fù)消費(RabbitMQ 不支持,Kafka 支持)
RocketMQ主要有四大核心組成部分:NameServer、Broker、Producer以及Consumer四部分
二、MQ 下載
官網(wǎng)下載:下載鏈接
進(jìn)入是這樣子的,這里是 rocketMq 最新版本的下載鏈接
如果你想下載舊版本的 rocketMq 的話,只需要改網(wǎng)址上的的版本就行,比如說把 4.9.3 改成 4.4.0
三、JAVA 環(huán)境配置
rocketmq 需要 Linux 上安裝JDK,版本 1.8 以上,如果你 Linux 上已經(jīng)配置了 Java 環(huán)境可跳過。
Linux 上配置 JAVA 環(huán)境可參見博客:Linux安裝Java環(huán)境(OpenJDK)
四、MQ 安裝
將下載好的安裝包上傳至服務(wù)器
rz 命令直接上傳安裝包 (這里我提前在 linux 上創(chuàng)建了一個文件夾 mkdir /soft/rocketmq 來存放管理的軟件)
上傳至 Linux 之后再解壓
命令:unzip rocketmq-all-4.4.0-bin-release.zip
它的目錄結(jié)構(gòu):
- benchmark:這里面就是一些可以直接運行,進(jìn)行測試的 sh 文件
- bean:該目錄是比較常用的,里面是一些可執(zhí)行文件
- conf:這里面就是一些配置文件
- lib:就是 mq 所依賴的第三方 jar 包
五、啟動 MQ
- 啟動 NameServer
進(jìn)入 bin 目錄 cd bin/
后臺啟動 nohup sh mqnamesrv & 或者 nohup ./mqnamesrv &
可以查看日志,看 mq 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
或者通過端口號查看
netstat -an | grep 9876
- 啟動 Broker
在啟動之前先修改兩個配置
vim runserver.sh
mq 默認(rèn)需要的內(nèi)存是比較大的,根據(jù)自己 Linux 的內(nèi)存大小去設(shè)置,我這里就改成 256 256 128 了
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
vim runbroker.sh
這里也修改成 256 256 128
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
啟動 broker
nohup ./mqbroker -n localhost:9876 &
查看日志檢測是否啟動成功
tail -f ~/logs/rocketmqlogs/broker.log
又看到日志打印這個就說明啟動成功了,注意:不要把它給關(guān)了
六、測試
開了兩個窗口,都在 mq 的 bin 目錄下,一個用于發(fā)送消息,一個用于接收消息
- 發(fā)送消息
# 聲明一個 namesrv 的地址
export NAMESRV_ADDR=localhost:9876
# 發(fā)送消息
./tools.sh org.apache.rocketmq.example.quickstart.Producer
PS:如果報錯了,可能出現(xiàn)的原因:
- 防火墻沒關(guān)
可以關(guān)閉掉防火墻
# 關(guān)閉防火墻
systemctl stop firewalld.service
# 查看防火墻的狀態(tài)
firewall-cmd --state
# 禁止firewall開機啟動
systemctl disable firewalld.service
或者讓防火墻開放 MQ 相關(guān)的端口
# 開放name server默認(rèn)端口
firewall-cmd --remove-port=9876/tcp --permanent
# 開放master默認(rèn)端口
firewall-cmd --remove-port=10911/tcp --permanent
# 開放slave默認(rèn)端口 (當(dāng)前集群模式可不開啟)
firewall-cmd --remove-port=11011/tcp --permanent
# 重啟防火墻
firewall-cmd --reload
- 查下 broker 關(guān)掉了
把 nameServer 和 Broker 重新啟動,這里我就說 broker 關(guān)掉引起的
- 接收消息
# 聲明一個 namesrv 的地址
export NAMESRV_ADDR=localhost:9876
# 發(fā)送消息
./tools.sh org.apache.rocketmq.example.quickstart.Consumer
七、運行
#新建目錄用來存放rocketmq-console的文件
mkdir /usr/local/rocketmq-console
cp target/rocketmq-console-ng-2.0.0.jar /usr/local/rocketmq-console/
#運行jar包
cd /usr/local/rocketmq-console/
java -jar rocketmq-console-ng-2.0.0.jar
運行成功在瀏覽器輸入 http://127.0.0.1:8080 即可看到運行界面,賬號密碼: admin/admin
- 配置賬號密碼
我們開啟了登錄驗證的功能,但是沒有設(shè)置賬戶密碼,這里默認(rèn)的賬戶密碼為 admin/admin。我們修改下這個密碼。
在 rocketmq-console的數(shù)據(jù)目錄下新建賬戶文件 users.properties 。
vim /usr/local/rocketmq-console/data/users.properties
- 設(shè)置賬號密碼
# 該文件支持熱修改,即添加和修改用戶時,不需要重新啟動console
# 格式, 每行定義一個用戶, username=password[,N] #N是可選項,可以為0 (普通用戶); 1 (管理員)
#定義管理員
admin=123456,1
#定義普通用戶
#user1=user1
#user2=user2
然后我們殺進(jìn)程,重啟這個jar包即可。
八、關(guān)閉 MQ
進(jìn)入 bin
目錄下
關(guān)閉 NameServer
文章來源:http://www.zghlxwxcb.cn/news/detail-597731.html
sh mqshutdown namesrv
關(guān)閉 Broker文章來源地址http://www.zghlxwxcb.cn/news/detail-597731.html
sh mqshutdown broker
到了這里,關(guān)于【Linux】Linux環(huán)境下安裝RocketMQ(圖文解說詳細(xì)版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!