1、遇到的問題:上測試環境,上次描述的鳥問題又出現了,就是生產者發3條數據,我這邊只能收到1條數據。
2、問題解決:
(1)去控制台看我的消費者啟動情況,貌似沒什么問題
,
(2)去測試服務器里看日志信息:只有入庫的那條是真的接收到了,其余壓根就沒有接收到,排除入庫過程的代碼問題。到此,問題只鎖定在我的consumer根本沒有接收到丟失的那兩條消息。
(3)仔細思考一下,發現了問題的根源,看圖一的控制台信息,可以發現,生產者默認給我分配了四個隊列,但是我的消費者只用了兩個隊列,這就是和那天的問題一樣啊,但是看消費終端的id只有我的服務器在我的消費者組里,沒有其他的服務器啊。而且我的topic下面的四個隊列中,只有一種類型的消費者,為什么另兩個隊列硬是分配不到呢。
3、問題答案:
仔細看了我的內網包,發現了一個問題,我自己的程序中包中,有人在跟我使用同一個消費者組,雖然消費的topic不同,而且那貨的topic一直在服務器里報錯。我將我的消費者組名改掉了,問題消失了。
********但是,不由得發問:
1、為什么同一個group,topic不同,它還要占用的我消息隊列?
2、同一個消費者組下,隊列是怎么分配的?
3、broker和隊列之間有什么聯系?
4、同一group,不同的消費者他的broker是怎么分配的?
要解決上訴問題,必須要深入理解RocketMQ的執行流程,查看MQ的源碼!