慢消費者:消費訊息過慢的consumer/subscriber。
慢消費者會對broker產生影響,尤其是non-durable的topic和queue,topic尤甚,會導致broker的記憶體爆滿,阻塞publisher。
1. non-durable topics
受慢消費者影像最大,傳送到non-durable topic的訊息不被持久化且訊息還要傳送給所有的subscribers。慢的subscriber會使訊息積壓,記憶體占用**,導致publisher阻塞,間接影響到快的subscriber消費訊息。
應對策略:
阻塞/放慢publisher的投放速度
斷開慢的subscriber連線
緩衝訊息到磁碟
丟掉慢subscriber的訊息
自定義外掛程式擴充套件策略
2. durable topics
訊息會持久化到磁碟,記憶體中的訊息可以丟掉,如果有足夠大的磁碟,慢subscriber會被deal well。
但如果慢subscriber慢太多的話,說明還是**出了問題,virtual topic?設計上的?
3. durable queues
訊息會持久化到磁碟,記憶體中的訊息可以丟掉。no problem,況且還有其他的consumer幫你消費,但如果訊息還是被積壓很多,說明設計出了問題,消費訊息太慢,消費速率趕不上生產速率。
3. non-durable queues
通常個別幾個慢consumer不是問題,有快的consumer會幫你消費,但如果全部consumer都慢,那就是問題了。
應對策略:
阻塞producer
緩衝訊息到磁碟
丟掉佇列中的訊息
// todo add blocked transport & implementation solutions
activemq 慢消費者處理
pendingmessagelimitstrategy慢消費者會對non durable topic帶來問題。慢消費者會強制 在記憶體中保留舊訊息。一旦填滿,就會進一步減緩消費速度。解決方案 使用pendingmessagelimitstrategy策略。除了在預獲取緩衝區設定大小之外,在記憶體中保...
activemq訊息的產生與消費 Java
activemq 進入bin目錄啟動,localhost 8161訪問activemq客戶端 1.傳送訊息給activemq客戶端 string user activemqconnection.default user 預設使用者名稱admin string password activemqcon...
聊聊mq中訊息消費的幾種方式
對mq了解不是很多的,可以看一下下面兩篇文章 聊聊mq的使用場景 聊聊業務系統中投遞訊息到mq的幾種方式 聊聊訊息消費的幾種方式 如何確保訊息至少消費一次 如何保證訊息消費的冪等性 從消費者的角度出發,分析一下訊息消費的兩種方式 push方式 pull方式 mq接收到訊息 mq主動將訊息推送給消費者...