消息堆積問題
當生產(chǎn)者發(fā)送消息的速度超過了消費者處理的速度,就會導致隊列的消息堆積,知道隊列存儲消息達到上限。最早接受的消息,可能就會成為死信,會被丟棄,這就是消息堆積問題。
解決消費對接問題
1.增加更多的消費者,提高消費者速度
2.在消費則內(nèi)開啟線程池加快消息處理速度
3.使用惰性隊列,擴大隊列容積,提高堆積上限
惰性隊列
rabbitmq3.6.0 版本開始,新增了Lazy Queues概念,也就是惰性隊列。
惰性隊列的特征如下:
- 接收的消息后直接存入磁盤而非內(nèi)存
- 消費者要消費消息時才會從磁盤中讀取并加載到內(nèi)存中
- 支持數(shù)百萬的消息存儲
普通的隊列會設置一個預警值默認40% 當隊列到了40%時,mqBroker 會阻止生產(chǎn)者發(fā)送消息。并將隊列中消息持久化到磁盤。等騰出空間了再接收消息。所以mq的性能是一個不穩(wěn)定,波浪形的。 而惰性隊列呢在接收消息后會直接寫到磁盤,所以不會觸發(fā)隊列的存儲預警,性能具有穩(wěn)定性,延遲性。
正因為惰性隊列支持百萬的消息存儲,所以用它來解決消息堆積問題再好不過了。
惰性隊列的實現(xiàn)
1.運行中隊列變?yōu)槎栊躁犃?br>
2.直接聲明隊列為惰性隊列文章來源:http://www.zghlxwxcb.cn/news/detail-594451.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-594451.html
惰性隊列的優(yōu)點有哪些?
- 基于磁盤存儲,消息上限高
- 米有間歇性的page-out,性能比較穩(wěn)定
惰性隊列的缺點有哪些
- 基于磁盤存儲,消息時效性會降低
- 性能受限于磁盤的IO
到了這里,關(guān)于RabbitMq消息堆積問題及惰性隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!