天天看點

RocketMQ ——踩坑

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

在用戶端的 Producer 運作起來準備發送消息時抛異常如下“ No route info of this topic ” ,原因是因為Producer 沒有正确連接配接到 Name Server

自己沒有在防護牆中開啟此Broker 端口,是以導緻用戶端 Producer 無論如何也連接配接不上.

[[email protected] apache-rocketmq]# firewall-cmd --zone=public --list-ports
8090/tcp 80/tcp 8080/tcp
[[email protected] apache-rocketmq]# firewall-cmd --zone=public --add-port=9876/tcp --permanent
success
[[email protected] apache-rocketmq]# firewall-cmd --reload
success
[[email protected] apache-rocketmq]# firewall-cmd --zone=public --list-ports
9876/tcp 8090/tcp 80/tcp 8080/tcp
[[email protected] apache-rocketmq]# 
           

指令分别含義是:

  1. 檢視防護牆開放的端口,此時沒有 9876
  2. 設定防火牆開放9876 端口
  3. 重新加載 firewall,修改配置後,必須重新加載才能生效:firewall-cmd --reload 
  4. 再次檢視防火牆開放的端口,此時已有 9876

2.RemotingTooMuchRequestException: sendDefaultImpl call timeout

在用戶端的 Producer 運作起來準備發送消息時抛出來的異常

因為使用的是VMware虛拟機,設定記憶體也隻有1G,是以從 Windows 上開發連接配接 虛拟機中的 nameServer 時要經過 Linux 系統的防火牆,而防火牆一般都會有逾時的機制,在網絡連接配接長時間不傳輸資料時,會關閉這個 TCP 的會話,關閉後再讀寫,就有可能導緻這個異常。

因為目前是自己學習,是以直接關閉了 Linux 的防火牆

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]#  systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 日 2018-08-12 00:19:39 CST; 2s ago
  Process: 877 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 877 (code=exited, status=0/SUCCESS)
 
8月 11 23:20:50 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall.....
8月 11 23:20:53 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall ...n.
8月 12 00:19:38 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall.....
8月 12 00:19:39 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall ...n.
Hint: Some lines were ellipsized, use -l to show in full.
[[email protected] ~]# 
           

3

在阿裡雲上部署節點,使用console控制台去連接配接節點時,總是去連接配接阿裡雲的内網ip:10911

RocketMQ ——踩坑

這是由于線上環境有多個網卡,預設情況下MQ很可能走的是内網的IP(因内網網卡排在外網網卡前面)是以要在RocketMQ的配置檔案中把阿裡雲的公網IP加上:

RocketMQ ——踩坑

4

當啟動節點後檢視節點狀态出現下面情況時

RocketMQ ——踩坑

我們應該去檢視日志檔案定位錯誤原因:zookeeper.out