Kafka 2.0課程 10 Consumer in Group

Consumer in Group

ZONGRU Li
Jan 15, 2020

在學習執行相關指令前,請先確認Server啟動(或參考課程6)

如課程 3內理論,consumer可以屬於某個group內

且 一個goup內的一個consumer只讀取獨立完整的patition

透過console-consumer指令可以知道如何呼叫出特定group內的consumer

以下用同一個group id來呼叫出console-consumer

kafka-console-consumer --bootstrap-server 127.0.0.1:9092 --topic first_topic --group my-first-app

發現訊息只給了其中一個consumer

下面多傳些不同訊息:

隨機地被左邊兩個相同group的consumer接走了!!

其中上述的group id可以自行指定(如上我都叫my-first-app)

接著再開第三個consumer(還是一樣的group id)

右邊producer開始輸入message

新訊息流入3個partition再流入各自的consumer

基本上流量會有自動控制

當關閉最上面的consumer

其中多出來的partition會自動分給剩餘的consumer其中一個

左中跟左下consumer其中一個會分配到兩個partition來的訊息接收

接著關掉全部的consumer:

接著再起一個新group id的consumer,並帶著from-beginning

全新的group id並from-beginning會看到至今給該topic的全部訊息

試著將上述group id的consumer結束

並用同樣group id在一次看from-beginning的訊息

發現就看不到任何訊息了!

因為第一次透過group id:my-another-app執行from-beginning後

會offset訊息,表示這個group id已經拿到舊有的(25條)全部訊息了

再次結束該consumer並在次執行並不帶from-beginning

新訊息才會在正常接收

再次結束該consumer

在producer趁consumer關閉時隨意打訊息

接著重啟consumer(group id是上面my-another-app)

接到後來打的訊息

有以上認知,就算是對consumer有不錯的瞭解了!

參考課程

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet