Kafka入門系列—3. 消費者組

一. topic的from-beginning參數

  • 啓動zookeeper和kafka

    bin/zkServer.sh start-foreground
    
    bin/kafka-server-start.sh config/server.properties
    
  • 創建topic

    bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic testtopic
    
  • 啓動producer和兩個consumer

    啓動producer

    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic
    

    打開兩個命令行窗口啓動兩個consumer

     bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning
    
  • 在producer中輸入一些字符,可以在consumer中看到已經獲取到這些字符。

producer

兩個consumer中展示收到的信息

  • 打開第三個命令行窗口,並創建一個新的consumer,不過這次的命令和之前的不太一樣

    bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic
    

可以看到,這次在創建consumer時的參數沒有--from-beginning。同時,窗口中並沒有輸出任何信息。

  • 此時在producer中輸入新的信息,查看3個consumer的情況:

在producer中新輸入will go to London

前兩個consumer中完整顯示所有信息

第三個consumer只顯示了最新產生的will go to London

以上例子可以印證之前的概念:

  1. 多個消費者可以訂閱同一個topic。
  2. 參數--from-beginning的作用是使consumer從kafka最早的消息開始消費。

二. 消費者組

在這之前先關閉之前創建的3個consumer窗口。並使用以下命令分別創建2個新的consumer,這次的命令與之前的也稍有不同。

  1. 一個消費者只能屬於一個消費者組
  2. 消費者組訂閱的topic只能被其中的一個消費者消費
  3. 不同消費者組中的消費者可以消費同一個topic
  • 實例

新開兩個命令行窗口,創建2個新的consumer:

 

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --group testgroup

在producer窗口中輸入信息,會發現只有一個consumer窗口中有輸出。

關閉剛纔創建的2個consumer,使用以下2個命令創建2個新的consumer:

 

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --group testgroup1

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --group testgroup2

訂閱testtopic的2個consumer分別屬於不同的消費者組testgroup1testgroup2,因此2個窗口中都會顯示producer產生的消息。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章