1. 程式人生 > >RocketMQ部分數據消費不了問題排查

RocketMQ部分數據消費不了問題排查

慢慢 ID 均衡 結果 校驗 實例 .com top 一次

技術分享圖片

問題現象

今天忽然收到RocketMQ預警信息如下:

技術分享圖片

提醒有部分數據沒有消費,產生堆積情況。

打開RocketMq-Console-Ng查看如下圖形式:

技術分享圖片

備註:第一反應是Consumer Group內訂閱了多個topic?(為什麽這麽懷疑,下次分析)。

通過命令statsAll 作用是查詢Topic and Consumer tps stats

sh mqadmin statsAll -n namesrv

發現沒有問題,很奇怪?還好之前源碼看過,只能調試源碼了。

源碼調試

本篇不重點講解源碼過程,後續有空再慢慢分析源碼部分,消費端為了實現負載均衡器,每次當有結點添加或者減少都會重新doRebalance,默認選擇的就是獲取所有隊列以及得到對應group下面所有的cidAll(所有的消費端),之後類似於分頁操作差不多……

進行斷點到該位置發現奇怪現象:

技術分享圖片
看到這裏就明白了為什麽RocketMq-Console-Ng查看下面很多是空白的沒有消費端了,由於cidAll的0、2、3一樣一共有16個隊列,cidAll顯示4個 那麽每個客戶端應該是分配4個的,但是由於0、2、3都一樣 就分配一次的。

源碼部分:

技術分享圖片

備註: 現象是什麽大概清楚了,下面的重點是為什麽會出現這樣的情況呢?

問題排查

通過RocketMQ命令查詢結果還是一樣:

技術分享圖片
看到這裏讓我不禁懷疑是否消費實例啟動多次,查看代碼依然沒有,實在沒辦法偶然查看了下tomcat的配置,驚喜的發現:
技術分享圖片
與該使用方交流發現是的確是沒有重啟部署了,重啟問題解決。

待解決

回頭看看為什麽會這樣,RocketMQ很多流程有點忘記了,抽空再過一遍,把這個問題梳理下。

天僅僅只是開始,期待你的持續關註,讓我們一起走進rocketmq的世界!!!

往期rocketmq系列文章

  • 讓你rocketmq用得比預期要好的 1 種方法
  • RocketMQ(一):源碼調試
  • rocketmq番外篇(一):開發命令行
  • RocketMQ(六):namesrv再探
  • RocketMQ(五):namesrv初探
  • CRC 校驗
  • RocketMQ(二):RPC通訊
  • RocketMQ解惑篇
  • RocketMQ快速入門
  • MQ 應用場景
  • RocketMQ集群部署配置
  • 阿裏RocketMQ

如果讀完覺得有收獲的話,歡迎點贊、關註、加公眾號【匠心零度】,查閱更多精彩歷史!!!

加入知識星球,一起探討!

技術分享圖片

RocketMQ部分數據消費不了問題排查