Java客戶端Pull和Push的選擇:Java客戶端必須使用Push Consumer
更新時間 2023-04-14 18:18:20
最近更新時間: 2023-04-14 18:18:20
分享文章
-
使用Pull可以實現的所有場景,均可使用Push實現,并且更簡單。
-
Push其實是長輪詢的Pull(依然是由客戶端發起),在客戶端通過配置參數是可以實現流控的,并不會出現服務端的流量壓垮客戶端的情況。
-
Push封裝了拉取消息,分發給消費線程的線程模型,非流控的情況下,由后臺線程主動拉取消息,并緩存在本地,消費線程池有空閑線程時,分發給消費線程,在有堆積量的情況下,可以保證消費線程一直工作,性能更高(備注:Pull只提供了拉取消息的功能,并且何時去拉取,拉取時機,這些都需要應用去控制;分發給消費線程的邏輯需要應用封裝,除了增加應用工作量外,還可能有不穩定、性能問題等)。
-
Push經過多個大型項目的長時間的使用(比如物聯網,使用能臺,多個試點省份),更成熟穩定。
-
Push會自動訂閱重試隊列,不需要再次調用拉取重試隊列的API來取得重試隊列的消息(備注:Pull需要另外調用API拉取重試隊列的消息)。
-
Pull是一種遺留的消費模式(兼容早期的API),新開發的應用,或者未上線的應用,都要求使用Push消費模式。