kafka 中消费者 groupId 是什么
📚 什么是 groupId?
groupId 是 Kafka 里消费者组(Consumer Group)的唯一标识。
- 同一个 groupId 的消费者,一起共享消费,一条消息只给组内一个消费者处理。
- 不同 groupId 的消费者组,各自独立消费,互不干扰。
✨ 举个例子(超级通俗版)
假设 Kafka 主题 test-topic
里有 100条消息。
有两种情况:
1. 同一个 groupId
消费者实例 | 组 |
消费者A | group-1 |
消费者B | group-1 |
👉 A 和 B 是一组人。
👉 Kafka 会把这100条消息分给他们,比如 A 处理50条,B处理50条。
👉 一条消息只会被一个人消费。
2. 不同 groupId
消费者实例 | 组 |
消费者A | group-1 |
消费者B | group-2 |
👉 A 和 B 是两组人。
👉 Kafka 会把全部100条消息都推给A,又全部推给B。
👉 每组都会收到完整的100条消息。
🚀 总结
名称 | 意义 |
groupId | 定义一组消费者的 "身份" |
同组 | 消息平分消费 |
不同组 | 每组都全量消费 |
📦 那么在你的项目里,groupId用来干嘛?
比如你写了一个批量消费者监听器:
@KafkaListener(topics = "test-topic", groupId = "your-consumer-group")
public void listen(List<String> messages) {System.out.println("Received batch: " + messages);
}
这里的 groupId = your-consumer-group
:
- 告诉Kafka:这些消费者属于同一个组
- Kafka自动分配消息给组里的消费者
- 一条消息只被这个组里一个人消费一次
❗ 注意
- 如果 groupId 写错了,可能导致同一条消息消费多次(因为是不同组)。
- 如果不写 groupId,Spring Kafka 会随机给你一个,导致每次都重新消费。