消息隊列兩種消費模式pull與push


消息隊列兩種消費模式pull與push

一、概念

MQ的消費模式分兩種:push和pull。

所謂push就是服務端主動推送消息給客戶端,而pull則是客戶端需要主動到服務端取數據。

二、兩種模式的優缺點

2.1 push模式的優缺點

push優點:

服務端主動推送給客戶端,及時性很高

push缺點:

1.當客戶端消費能力遠低於服務端生產能力,那么一旦服務端推送大量消息到客戶端時,就會導致客戶端消息堆積,處理緩慢,甚至服務崩潰。(那么如何解決這個問題呢?需要mq提供流控制,也就是依據客戶端消費能力做流控。比如rabbitmq設置Qos,限制消費數量。)

2.服務端需要維護每次傳輸狀態,以防消息傳遞失敗進行重試。

2.2 pull模式的優缺點

pull模式優點:

1.客戶端可以依據自己的消費能力進行消費

2.傳輸失敗時不需要重試,反正數據還在服務端。

pull模式缺點

1.主動到服務端拉取消息。這個拉取消息的間隔需要設置好,不太好設置。間隔太短,對服務器請求壓力過大。間隔時間過長,那么必然會造成一部分數據的延遲。(也有一些解決方案,間隔時間指數級增長,5ms,10ms,20ms,40ms,80ms。。。然后再回到5ms,一定程度上解決,但是如果在41ms時來了數據,那么到80ms就有40ms左右的時間延遲。另外在騰訊的CMQ里有一套長輪詢的解決方案,就是取數據時要是沒有數據可消費,不是直接返回而是連接等待,一直有數據來了再返回)

三、push和pull模式不同適用場景

對於服務端生產消息數據比較大時,而消費端處理比較復雜,消費能力相對較低時,這種情況就適用pull模式。

對於數據實時性要求高的場景,就比較適用與push模式。

四、不同消息中間件支持的模式

img

不同消息中間支持模式

另外springboot集成的rabbitmq封裝的就是push模式。

原文鏈接:https://www.jianshu.com/p/714afde33af6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM