mq獲取訊息慢 ActiveMQ的慢消費者

2021-10-18 08:24:51 字數 901 閱讀 1011

慢消費者:消費訊息過慢的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主動將訊息推送給消費者...