前段時間,在使用spring camel開發esb時候碰到乙個業務場景,個別activemq的監聽佇列每秒中訊息成兩位數、三位數的往裡接收,加上esb監聽端有一定的業務邏輯處理,造成佇列積壓嚴重,遂提出查詢對應解決方案,索性技術難度不大,監聽端採用blockingqueue做快取解決訊息積壓問題。
1、在監聽入口位置,建立乙個佇列接收bean
private messagetask task = new messagetask();
@override
public void process(exchange exchange) throws exception catch (exception e)
}
2、messagetask
@component
public class messagetask
/*** 新增資訊至佇列中
** @param content
*/public void addqueue(string content)
/*** 初始化執行
*/public void execute()
} catch (exception e)
}}, 3, 3, timeunit.seconds);
}}
訊息佇列如何解決訊息積壓問題
訊息佇列訊息積壓了怎麼辦?q 剛開始是對這個疑問抱有質疑態度的,因為使用訊息佇列的其中目的就是削峰填谷,來避免高流量時,對下游服務的衝擊,所以使用訊息佇列進行緩衝,下游根據自己的消費能力去消費,我感覺這就是訊息積壓本就是使用訊息佇列的功能,怎麼會是問題呢?a 首先訊息積壓是正常現象,但凡是過多就不正...
訊息佇列筆記二 訊息積壓,過期失效,設計MQ
水平擴容增加 consumer 的例項數量 先修復 consumer 的問題,確保其恢復消費速度,然後將現有 consumer 都停掉 新建乙個 topic,partition 是原來的 10 倍,臨時建立好原先 10 倍的 queue 數量 然後寫乙個臨時分發資料的 consumer 程式,這個程...
關於MQ的幾件小事(六)訊息積壓在訊息佇列裡怎麼辦
場景 幾千萬條資料在mq裡積壓了七八個小時,從下午4點多,積壓到了晚上很晚,10點多,11點多。線上故障了,這個時候要不然就是修復consumer的問題,讓他恢復消費速度,然後傻傻的等待幾個小時消費完畢。這個肯定不行。乙個消費者一秒是1000條,一秒3個消費者是3000條,一分鐘是18萬條,1000...