Kafka 消费者详解:从命令行到源码实现
Kafka 消费者是消息处理的终端,负责从 Kafka 集群拉取(pull)消息并进行业务处理。与生产者的推(push)模式不同,消费者采用拉取模式主动获取消息,且通过消费者组(Consumer Group) 机制实现消息的负载均衡与重复消费控制。本文将从命令行工具、核心配置、工作原理到源码实现,全面解析 Kafka 消费者。
消费者核心概念
- 消费者组:多个消费者组成一个组,共同消费一个或多个主题。同一组内的消费者分工合作,每个分区只能被组内一个消费者消费(避免重复消费)。
- 消息拉取:消费者主动从 Broker 的分区拉取消息,而非 Broker 推送,灵活控制消费速度。
- 偏移量(Offset):记录消费者已消费到的位置,确保重启后从断点继续消费。偏移量存储在 Kafka 内部主题
__consumer_offsets中(0.9 版本后)。 - 单播与广播:
- 单播:同一条消息仅被同一消费者组的一个消费者消费(默认模式)。
- 广播:不同消费者组可消费同一条消息(通过多组订阅实现)。
命令行消费者工具:kafka-console-consumer
Kafka 提供 kafka-console-consumer.sh(Linux/Mac)或 kafka-console-consumer.bat(Windows)工具,用于快速测试消费消息。
基本使用
(1)消费最新消息
从主题的最新位置(latest)开始消费,仅接收新写入的消息:
1 | # Linux/Mac |
(2)从开头消费所有消息
通过 --from-beginning 从主题的最早位置(earliest)开始消费历史消息: