温馨提示×

ubuntu kafka配置消费组怎么配

小樊
47
2026-09-02 13:36:35
栏目: 智能运维

在 Ubuntu 上配置 Kafka 消费组(Consumer Group),通常分几种场景:命令行消费Java 客户端配置、以及 Kafka 配置文件层面的设置。下面按常见用法说明。


一、前提条件(Ubuntu 环境)

假设你已经安装好 Kafka(如 /opt/kafka/usr/local/kafka),并且:

  • Kafka 已启动
  • Zookeeper(老版本)或 KRaft(新版本)已启动

二、命令行消费组(最常用)

1️⃣ 使用消费组消费消息

kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic test-topic \
  --group my-consumer-group \
  --from-beginning

说明:

  • --group:消费组名称(不存在会自动创建)
  • 同一 group 内的多个消费者会均衡分区

2️⃣ 查看消费组状态

kafka-consumer-groups.sh \
  --bootstrap-server localhost:9092 \
  --describe \
  --group my-consumer-group

输出示例:

TOPIC    PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
test     0          10              15              5

3️⃣ 重置消费组 offset

kafka-consumer-groups.sh \
  --bootstrap-server localhost:9092 \
  --group my-consumer-group \
  --reset-offsets \
  --to-earliest \
  --execute \
  --topic test-topic

三、Java 客户端消费组配置(重点)

1️⃣ Maven 依赖

<dependency>
  <groupId>org.apache.kafka</groupId>
  <artifactId>kafka-clients</artifactId>
  <version>3.6.0</version>
</dependency>

2️⃣ 消费组核心配置

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "my-consumer-group"); // ✅ 消费组
props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "5000");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("test-topic"));

while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    for (ConsumerRecord<String, String> record : records) {
        System.out.println(record.value());
    }
}

group.id 就是消费组


四、Ubuntu 上 Kafka 配置文件说明

server.properties(Broker 层面)

一般不需要特别配置消费组,但常见相关参数:

# 消费组 offset 存储(老版本)
offsets.topic.replication.factor=1

# 新版本默认使用内部 topic __consumer_offsets

五、消费组常见注意事项(Ubuntu 实战)

同一 group.id 的消费者

  • 自动分区分配
  • 一个分区只能被一个消费者消费

不同 group.id

  • 互不影响
  • 都会收到全量消息

消费组卡住

  • 查看 LAG
  • 检查消费者是否宕机

六、常见问题

Q1:消费组不生效?

  • 检查是否指定 --group
  • Java 是否设置 group.id

Q2:Ubuntu 找不到命令?

cd /opt/kafka/bin

或加到 PATH:

export PATH=$PATH:/opt/kafka/bin

如果你需要:

  • ✅ Docker 中的 Kafka 消费组
  • ✅ KRaft 模式(无 Zookeeper)
  • ✅ Python(kafka-python)消费组
  • ✅ 多消费者负载均衡示例

告诉我你的使用场景,我可以直接给你完整配置。

0