一. topic的from-beginning參數(shù)
-
啟動zookeeper和kafka
bin/zkServer.sh start-foreground bin/kafka-server-start.sh config/server.properties -
創(chuàng)建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中看到已經(jīng)獲取到這些字符。

producer

兩個consumer中展示收到的信息
-
打開第三個命令行窗口,并創(chuàng)建一個新的consumer,不過這次的命令和之前的不太一樣:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic
可以看到,這次在創(chuàng)建consumer時的參數(shù)沒有--from-beginning。同時,窗口中并沒有輸出任何信息。
- 此時在producer中輸入新的信息,查看3個consumer的情況:

在producer中新輸入will go to London

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

第三個consumer只顯示了最新產(chǎn)生的will go to London
以上例子可以印證之前的概念:
- 多個消費(fèi)者可以訂閱同一個topic。
- 參數(shù)
--from-beginning的作用是使consumer從kafka最早的消息開始消費(fèi)。
二. 消費(fèi)者組
在這之前先關(guān)閉之前創(chuàng)建的3個consumer窗口。并使用以下命令分別創(chuàng)建2個新的consumer,這次的命令與之前的也稍有不同。
- 一個消費(fèi)者只能屬于一個消費(fèi)者組
- 消費(fèi)者組訂閱的topic只能被其中的一個消費(fèi)者消費(fèi)
- 不同消費(fèi)者組中的消費(fèi)者可以消費(fèi)同一個topic
- 實例
新開兩個命令行窗口,創(chuàng)建2個新的consumer:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --group testgroup
在producer窗口中輸入信息,會發(fā)現(xiàn)只有一個consumer窗口中有輸出。
關(guān)閉剛才創(chuàng)建的2個consumer,使用以下2個命令創(chuàng)建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分別屬于不同的消費(fèi)者組testgroup1 和testgroup2,因此2個窗口中都會顯示producer產(chǎn)生的消息。