ActiveMQ處理積壓的訊息

2021-09-22 08:02:53 字數 1349 閱讀 5928

如果消費者變為慢速消費者,那麼後面可能會導致訊息積壓,導致生產者速度也變慢,甚至停止。我們可以配置訊息的過期時間,並設定訊息過期丟棄策略,以及使用死信佇列來處理訊息的積壓。

activemq提供了乙個timestampingbrokerplugin外掛程式,通過此外掛程式,我們可以為持久化訊息設定過期時間。參考:

>

ttlceiling

="86400000"

zeroexpirationoverride

="86400000"

/>

plugins

>

zeroexpirationoverride會為沒有設定過期時間的訊息設定過期時間。ttlceiling表示過期時間上限,如果程式中設定的過期時間超過此值,以此值為準。

>

>

>

>

topic

=">"

expiremessagesperiod

="60000"

>

>

proces***pired

="false"

/>

deadletterstrategy

>

policyentry

>

policyentries

>

policymap

>

destinationpolicy

>

borker

>

xmlns

=""scheduleperiodfordestinationpurge

="10000"

>

>

>

>

queue

=">"

gcinactivedestinations

="true"

inactivetimoutbeforegc

="30000"

/>

policyentries

>

policymap

>

destinationpolicy

>

broker

>

scheduleperiodfordestinationpurge:執行清理任務的週期;

gcinactivedestinations=true:表示啟用清理功能;

inactivetimoutbeforegc:queue或topic的超時時間,在規定的時間內,無有效訂閱,沒有入隊記錄,超時後就會被清理。

參考:

訊息積壓的處理

一 訊息積壓的原因 訊息積壓的直接原因,一定是系統中某個部分出現了效能問題,來不及處理上游傳送的訊息,才會導致訊息積壓。二 優化效能來避免訊息積壓 在使用訊息佇列的系統中,對於效能的優化,主要體現在生產者和消費者兩部分的業務邏輯中。對於訊息佇列本身的效能,作為使用者不需要太關注。主要原因是對於絕大多...

快速處理積壓訊息

場景二場景三 1 大量訊息在mq裡積壓了七八個小時還沒解決 一般的解決方案是修復消費者,讓消費者恢復消費速度。但是資料量大的情況下需要耗時很久。一般這個時候,只能操作緊急擴容了,1 先修復consumer的問題,確保其恢復消費的速度 2 新建乙個topic,partition是原來的10倍,臨時建立...

處理訊息佇列積壓

當消費者出現異常,很容易引起佇列積壓,如果一秒鐘1000個訊息,那麼乙個小時就是幾千萬的訊息積壓,是非常可怕的事情,但是生產線上又有可能會出現 當訊息積壓來不及處理,rabbitmq如果設定了訊息過期時間,那麼就有可能由於積壓無法及時處理而過期,這訊息就被丟失了 解決方法 不建議在生產環境使用資料過...