【进阶篇-消息队列】——Kafka Consumer源码分析(消息消费的实现过程)


本文来源:极客时间vip课程笔记

一、前提回顾

  • 在开始分析源码之前,我们一起来回顾一下 Kafka 消费模型的几个要点

    1、Kafka 的每个 Consumer(消费者)实例属于一个 ConsumerGroup(消费组)
    2、在消费时,ConsumerGroup 中的每个 Consumer 独占一个或多个 Partition(分区);
    3、对于每个 ConsumerGroup,在任意时刻,每个 Partition 至多有 1 个 Consumer 在消费;
    4、每个 ConsumerGroup 都有一个 Coordinator(协调者)负责分配 Consumer 和 Partition 的对应关系,当 Partition 或是 Consumer 发生变更时,会触发 rebalance(重新分配)过程,重新分配 Consumer 与 Partition 的对应关系;
    5、Consumer 维护与 Coordinator 之间的心跳,这样 Coordinator 就能感知到 Consumer 的状态,在 Consumer 故障的时候及时触发 rebalance。

  • 掌握并理解 Kafka 的消费模型,对于接下来理解其消费的实现过程是至关重要的,如果你对上面的这些要点还有不清楚的地方,建议回顾一下之前的章节或者看一下 Kafka 相关的文档,然后再继续接下来的内容。

  • 我们使用当前 2.2 版本进行分析,使用 Git 在 GitHub 上直接下载源码到本地:

    git clone git@github.com:apache/kafka.git
    cd kafka
    git checkout 2.2
    

二、Kafka 的 Consumer 入口类

  • Kafka 的 Consumer 入口类出了一个使用 Consumer 消费的最简代码示例:

         // 设置必要的配置信息
         Properties props = new Properties();
         props.put("bootstrap.servers", "localhost:9092");
         props.put("group.id", "test");
         props.put("enable.auto.commit", "true");
         props.put("auto.commit.interval.ms", "1000");
         props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
         props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    
         // 创建Consumer实例
         KafkaConsumer<String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小志的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值