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产生的消息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值