librdkafka消費者消費方式


   最近在研究librdkafka消費着模式,一直對RdKafka::KafkaConsumer::assign(vector<RdKafka::TopicPartition *> &)函數有疑問,今天做了個小實驗驗證了自己的想法。

 其實kafka有兩種消費模式,一種是訂閱模式,一種是特定分區模式:

 1. 訂閱模式:消費着訂閱某個topic,那么對於這個topic所有分區內的消息,它都能去消費(當然,同一消費者組的消費者只能消費一次指定topic的消息)。即只要有分區有消息阻塞,且它是空閑狀態,

                          它就可以去消費。使用librdkafka c++版本,即調用RdKafka::KafkaConsumer::subscirbe(const vector<string> &topics>.

    2. 分區模式:消費着消費指定topic的指定分區。即消費者只消費指定分區,即使當前分區無數據,而其他分區數據阻塞,也會不去干擾別的分區。使用librdkafka c++版本,調用

                           RdKafka::KafkaConsumer::assign(const vector<RdKafka::TopicPartition*> &).   

 

   兩種消費模式各有優劣, 訂閱模式可以大大的提高消費速率,但是無法滿足需要時序處理的場景,這種場景下,就只能使用分區模式了,分區模式可以很好的保證同一個分區數據的時序性,但是當數據量

   過大的時候,消費速率會受影響。   


免責聲明!

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



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