日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RocketMQ的Consumer详解之push和pull模式(长轮询)

發布時間:2024/4/13 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RocketMQ的Consumer详解之push和pull模式(长轮询) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?push和pull模式

在RocketMQ中,消費者有兩種模式,一種是push模式,另一種是pull模式。

push模式:客戶端與服務端建立連接后,當服務端有消息時,將消息推送到客戶端。

pull模式:客戶端不斷的輪詢請求服務端,來獲取新的消息。

但在具體實現時,Push和Pull模式都是采用消費端主動拉取的方式,即consumer輪詢從broker拉取消息。

區別:

Push方式里,consumer把輪詢過程封裝了,并注冊MessageListener監聽器,取到消息后,喚醒MessageListener的consumeMessage()來消費,對用戶而言,感覺消息是被推送過來的。

Pull方式里,取消息的過程需要用戶自己寫,首先通過打算消費的Topic拿到MessageQueue的集合,遍歷MessageQueue集合,然后針對每個MessageQueue批量取消息,一次取完后,記錄該隊列下一次要取的開始offset,直到取完了,再換另一個MessageQueue。

疑問:既然是采用pull方式實現,RocketMQ如何保證消息的實時性呢?

長輪詢

RocketMQ中采用了長輪詢的方式實現,什么是長輪詢呢?

長輪詢即是在請求的過程中,若是服務器端數據并沒有更新,那么則將這個連接掛起,直到服務器推送新的數據,再返回,然后進入循環周期。

客戶端像傳統輪詢一樣從服務端請求數據,服務端會阻塞請求不會立刻返回,直到有數據或超時才返回給客戶端,然后關閉連接,客戶端處理完響應信息后再向服務器發送新的請求。

?

總結

以上是生活随笔為你收集整理的RocketMQ的Consumer详解之push和pull模式(长轮询)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。