學習安裝 RocketMQ

奇蹟師發表於2021-08-05

前言

  • 學習一個元件的前提是去安裝它
  • 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 是否執行成功

參考文章

docker安裝部署rocketmq單機
RocketMQ學習之安裝部署及基礎講解

結語

  • 謝謝能夠看到最後
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章