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

file

1、介紹

Apache RocketMQ是一個分佈式、隊列模型的消息中間件,具備低延遲、高性能和高可靠、萬億級容量和靈活的可擴展性。核心組件由四部分組成:Name ServersBrokersProducerConsumer;它們中的每個均可以水平擴展,而沒有單一的故障節點。java

file

  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配置決定

 

2、MQ安裝部署

2.1. 下載

直接找最新版下載後解壓
http://rocketmq.apache.org/re...
filegit

 

2.2. 修改配置

修改 conf/broker.conf
添加如下配置
filegithub

brokerIP1:配置broker所在服務器的ip地址,以便Name Server鏈接

 
修改 runserver.shrunbroker.sh (可不改)
由於rocketMQ默認的啓動參數內存佔用很是大,若是環境沒有這麼多內存就必需修改JAVA_OPT參數apache

  • runserver.sh

file

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  • runbroker.sh

file

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,應該使用如下命令segmentfault

sh bin/mqshutdown broker

sh bin/mqshutdown namesrv

 

3、安裝可視化管理界面

  • 下載

https://github.com/apache/roc...安全

  • 編譯
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 &
  • 訪問

http://192.168.28.130:8080/
filebash

 

4、常見異常處理

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. 解決辦法

  • 排查1Broker 禁止自動建立 Topic,且用戶沒有經過手工方式建立 Topicmaven

    • 能夠在rocketmq所在目錄下執行 " sh bin/mqbroker -m " 來查看 broker 的配置參數
    • 以下所示,autoCreateTopicEnable=true 證實是沒有問題的
![file](https://image-static.segmentfault.com/309/400/3094003269-5d803e656aa1f_articlex)

 

  • 排查2Broker 沒有正確鏈接到 Name Server
    經過查看broker的日誌 tail -f ~/logs/rocketmqlogs/broker.log 看看有沒有錯誤信息

 

  • 排查3Producer 沒有正確鏈接到 Name Servertcp

    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

file

 

4.2.2. 解決辦法

檢查 rocketmq-console 的集羣頁籤,broker 的地址是否正確
file
broker地址的配置方式請參考 安裝部署 中提到的步驟:

  1. 修改 broker.conf 的配置,添加 brokerIP1 參數
  2. 啓動 broker 時加上 -c 參數指定配置文件

 

4.3. 消費/查看不了死信隊列topic的消息

file

4.3.1. 異常說明

死信隊列默認的 perm 值爲2沒有查看權限
 

4.3.2. 解決辦法

在控制檯把隊列的 perm 改成6就能夠了
主題點擊 TOPIC配置
file
修改perm
file

 

推薦閱讀

 
掃碼關注有驚喜!

file

相關文章
相關標籤/搜索