前言
- 學習一個元件的前提是去安裝它
- rocketMQ 中存在幾種部署模式:單機部署,多Master部署,多主多從,Dleger模式
- 因為目前是學習,所以只推薦 – 單機部署
- 單機部署兩種方式
1.本地下載執行 (推薦第一次安裝時使用該方法)
2.docker容器部署 (推薦第二次即以後使用該方法)
1.本地安裝
1.準備
- 安裝 jdk 8+
- 安裝 Maven 3.2.X+
- 安裝 git
2. 安裝 Rocket MQ
1.下載,解壓
# 下載
$ wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
# 解壓
$ unzip rocketmq-all-4.7.1-source-release.zip
2.使用 Maven 編譯RocketMQ 原始碼
$ cd rocketmq-all-4.7.1-source-release
$ mvn -Prelease-all -DskipTests clean install -U
3.修改 檔案容量
ps: 因為 broker啟動時的預設配置是 8g 8g 4g,如果你的伺服器記憶體能達到以上需求,不需要進行如下的檔案修改
ps: rocketmq 在 4.7 版本後以下檔案都放在了 distribution 中.
# 修改 bin/runserver.sh 檔案
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=320m"
#修改 bin/runbroker.sh 檔案
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
# 修改 tools.sh 檔案
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=128m"
3.啟動 rocketmq
1.啟動 nameserver
# 啟動並重定向日誌檔案列印,後臺執行
mkdir logs
nohup bin/mqnamesrv 1>logs/ng.log 2>logs/ng-err.log &
# jps命令 檢視是否啟動成功
$jps
29516 NamesrvStartup # 意味著namesrv 成功啟動
5982 Jps
2.啟動broker
# 修改 broker.conf節點
vim conf/broker.conf
#新增
namesrvAddr = 公網IP地址:9876
brokerIP1 = 公網IP地址
# 啟動重定向日誌,確認埠 ,啟動自動建立節點,設定配置為指定檔案,後臺執行
nohup sh bin/mqbroker 1>/root/utils/rocketmq-all-4.7.0-bin-release/logs/mq.log -n 127.0.0.1:9876 autoCreateTopicEnable=true -c /root/utils/rocketmq-all-4.7.0-bin-release/conf/broker.conf &
# jps 檢視
$jps
8448 Jps
29515 BrokerStartup #成功啟動
29516 NamesrvStartup
4.模擬
1.模擬生產者
$export NAMESRV_ADDR=127.0.0.1:9876
$sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
2.模擬消費者
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
5.關閉
mqshutdown namesrv #關閉nameserver
mqshutdown broker #關閉broker
6.通過控制檯連線 rocketmq
1.下載
git clone https://github.com/apache/rocketmq-externals.git
2.配置
cd rocketmq-exxternals/rocketmq-console/
# 修改maven專案的資原始檔
$vim src/main/resource/application.properties
server.port=9877
rocketmq.config.namesrvAddr=127.0.0.1:9876
3.打包執行
# 檢視地址
$pwd
~ /rocketmq-exxternals/rocketmq-console/
$mvn clean package -Dmaven.test.skip=true
$java -jar target/rocketmq-console-ng-2.0.0.jar >logs/console.log &
可能出現的問題
1.nohup 空格即退出
沒有配置好 bin 中的 sh 的 Xms 等最大容量
2.closeChannel: close the connection to remote address[] result: true
沒有開放 10909,10911埠
參考地址
2. docker 容器部署
1.下載
#下拉專案
git clone https://github.com/apache/rocketmq-docker.git
#進入
$cd rocketmq-externals-master/rocketmq-docker/image-build
$sh build-image.sh RMQ-4.7.1
$cd ..
$sh stage.sh 4.7.1
2.準備配置檔案
1.準備 broker.conf 檔案
vim broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr = 公網ip:9876
brokerIP1 = 公網ip
2.準備 docker-compose.yml 檔案
vim docker-rocketmq-compose.yml
version: '3.5'
services:
rmqnamesrv:
image: apacherocketmq/rocketmq:4.7.1
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- /opt/logs:/opt/logs
- /opt/store:/opt/store
command: sh mqnamesrv
networks:
rmq:
aliases:
- rmqnamesrv
rmqbroker:
image: apacherocketmq/rocketmq:4.7.1
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
volumes:
- /opt/logs:/opt/logs
- /opt/store:/opt/store
- /home/data/rocketmq/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms512m -Xmx512m -Xmn512m"
command: sh mqbroker rmqnamesrv:9876 -c broker.conf autoCreateTopicEnable=true
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqbroker
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 9877:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=true"
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqconsole
networks:
rmq:
name: rmq
driver: bridge
3.安裝
docker-compose -f docker-rocketmq-compose.yml up -d
4.檢視
- 檢視: 設定的IP:9877 是否執行成功
參考文章
結語
- 謝謝能夠看到最後
本作品採用《CC 協議》,轉載必須註明作者和本文連結