kafka消費者的三種模式


幾種不同的注冊方式

  • subscribe方式:當主題分區數量變化或者consumer數量變化時,會進行rebalance;注冊rebalance監聽器,可以手動管理offset不注冊監聽器,kafka自動管理
  • assign方式:手動將consumer與partition進行對應,kafka不會進行rebanlance

關鍵配置及含義

  • enable.auto.commit 是否自動提交自己的offset值;默認值時true

  • auto.commit.interval.ms 自動提交時長間隔;默認值時5000 ms

  • consumer.commitSync(); offset提交命令;

默認配置

采用默認配置情況下,既不能完全保證At-least-once 也不能完全保證at-most-once;
比如:

在自動提交之后,數據消費流程失敗,這樣就會有丟失,不能保證at-least-once;
數據消費成功,但是自動提交失敗,可能會導致重復消費,這樣也不能保證at-most-once;
但是將自動提交時長設置得足夠小,則可以最大限度地保證at-most-once;

at most onece模式

基本思想是保證每一條消息commit成功之后,再進行消費處理;
設置自動提交為false,接收到消息之后,首先commit,然后再進行消費

at least onece模式

基本思想是保證每一條消息處理成功之后,再進行commit;
設置自動提交為false;消息處理成功之后,手動進行commit;
采用這種模式時,最好保證消費操作的“冪等性”,防止重復消費;

exactly onece模式

核心思想是將offset作為唯一id與消息同時處理,並且保證處理的原子性;
設置自動提交為false;消息處理成功之后再提交;
比如對於關系型數據庫來說,可以將id設置為消息處理結果的唯一索引,再次處理時,如果發現該索引已經存在,那么就不處理;


免責聲明!

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



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