天天看點

Apache RocketMQ 消息隊列部署與可視化界面安裝

Apache RocketMQ 消息隊列部署與可視化界面安裝

一、介紹

Apache RocketMQ是一個分布式、隊列模型的消息中間件,具有低延遲、高性能和高可靠、萬億級容量和靈活的可擴充性。核心元件由四部分組成:Name Servers,Brokers,Producer 和 Consumer;它們中的每一個都可以水準擴充,而沒有單一的故障節點。

Apache RocketMQ 消息隊列部署與可視化界面安裝
  1. NameServer:是一個幾乎無狀态的節點,可叢集部署,節點之間無任何資訊同步
  2. Broker:部署相對複雜,Broker分為Master與Slave,一個Master可以對應多個Slaver,但是一個Slaver隻能對應一個Master,Master與Slaver的對應關系通過指定相同的BrokerName,不同的BrokerId來定義,BrokerId為0表示Master,非0表示Slaver。Master可以部署多個。每個Broker與NameServer叢集中的所有節點建立長連接配接,定時注冊Topic資訊到所有的NameServer
  3. Producer:與NameServer叢集中的其中一個節點(随機選擇)建立長連接配接,定期從NameServer取Topic路由資訊,并向提供Topic服務的Master建立長連接配接,且定時向Master發送心跳。Produce完全無狀态,可叢集部署
  4. Consumer:與NameServer叢集中的其中一個節點(随機選擇)建立長連接配接,定期從NameServer取Topic路由資訊,并向提供Topic服務的Master、Slaver建立長連接配接,且定時向Master、Slaver發送心跳。Consumer即可從Master訂閱消息,也可以從Slave訂閱消息,訂閱規則由Broker配置決定

二、MQ安裝部署

2.1. 下載下傳

直接找最新版下載下傳後解壓

http://rocketmq.apache.org/release_notes
Apache RocketMQ 消息隊列部署與可視化界面安裝

2.2. 修改配置

修改

conf/broker.conf

添加以下配置

Apache RocketMQ 消息隊列部署與可視化界面安裝
brokerIP1:配置broker所在伺服器的ip位址,以便Name Server連接配接

runserver.sh

runbroker.sh

(可不改)

因為rocketMQ預設的啟動參數記憶體占用非常大,如果環境沒有這麼多記憶體就必需修改

JAVA_OPT

參數

  • runserver.sh
    Apache RocketMQ 消息隊列部署與可視化界面安裝
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"           
  • runbroker.sh
    Apache RocketMQ 消息隊列部署與可視化界面安裝
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"           

2.3. 運作Name Server

nohup sh bin/mqnamesrv &           
檢視運作日志:tail -f ~/logs/rocketmqlogs/namesrv.log

2.4. 運作Broker

nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf &           

通過-c參數指定配置檔案

檢視運作日志:tail -f ~/logs/rocketmqlogs/broker.log

2.5. 停止服務的方式

如果需要停止RocketMQ的服務,在生産環境不建議直接用kill,應該使用以下指令

sh bin/mqshutdown broker

sh bin/mqshutdown namesrv           

三、安裝可視化管理界面

mvn clean package -Dmaven.test.skip=true           
  • 運作
nohup java -jar \
    -Drocketmq.config.namesrvAddr=192.168.28.130:9876 \
    -Drocketmq.config.isVIPChannel=false \
    rocketmq-console-ng-1.0.0.jar &           
Apache RocketMQ 消息隊列部署與可視化界面安裝

四、常見異常處理

4.1. MQClientException: No route info of this topic, TopicTest1

4.1.1. 異常說明

在用戶端的

Producer

運作起來準備發送消息時抛異常為 “ No route info of this topic ” 異常産生的原因可能是:

  1. Broker

    禁止自動建立

    Topic

    ,且使用者沒有通過手工方式建立 Topic
  2. Broker

    沒有正确連接配接到

    Name Server

  3. Producer

    Name Server

4.1.2. 解決辦法

  • 排查1:

    Broker

    Topic

    ,且使用者沒有通過手工方式建立

    Topic

    • 可以在rocketmq所在目錄下執行 " sh bin/mqbroker -m " 來檢視 broker 的配置參數
    • 如下所示,

      autoCreateTopicEnable=true

      證明是沒有問題的
      Apache RocketMQ 消息隊列部署與可視化界面安裝
  • 排查2:

    Broker

    Name Server

    通過檢視broker的日志

    tail -f ~/logs/rocketmqlogs/broker.log

    看看有沒有錯誤資訊
  • 排查3:

    Producer

    Name Server

    1. 檢查程式連接配接

      Name Server

      的位址有沒有錯
    2. 如果在雲伺服器上,檢查安全組的配置

      9876

      端口有沒有開發
    3. 看看有沒有打開防火牆,有的話設定防火牆開放

      9876

      端口
      [root@zlt rocketmq-all-4.5.0-bin-release]# firewall-cmd --zone=public --list-ports
      8090/tcp 80/tcp 8080/tcp
      [root@zlt rocketmq-all-4.5.0-bin-release]# firewall-cmd --zone=public --add-port=9876/tcp --permanent
      success
      [root@zlt rocketmq-all-4.5.0-bin-release]# firewall-cmd --reload
      success
      [root@zlt rocketmq-all-4.5.0-bin-release]# firewall-cmd --zone=public --list-ports
      9876/tcp 8090/tcp 80/tcp 8080/tcp           

4.2. RemotingTooMuchRequestException: sendDefaultImpl call timeout

4.2.1. 異常說明

  • Producer

    運作起來準備發送消息時抛異常如下
  • 通常因為

    Name Server

    連接配接不上

    Broker

    Apache RocketMQ 消息隊列部署與可視化界面安裝

4.2.2. 解決辦法

檢查

rocketmq-console

的叢集頁簽,

broker

的位址是否正确

Apache RocketMQ 消息隊列部署與可視化界面安裝

broker

位址的配置方式請參考

安裝部署

中提到的步驟:

  1. broker.conf

    的配置,添加

    brokerIP1

  2. 啟動

    broker

    時加上

    -c

    參數指定配置檔案

4.3. 消費/檢視不了死信隊列topic的消息

Apache RocketMQ 消息隊列部署與可視化界面安裝

4.3.1. 異常說明

死信隊列預設的

perm

值為2沒有檢視權限

4.3.2. 解決辦法

在控制台把隊列的

perm

改為6就可以了

主題點選

TOPIC配置

Apache RocketMQ 消息隊列部署與可視化界面安裝

修改perm

Apache RocketMQ 消息隊列部署與可視化界面安裝