You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka同一消费组消费异常:仅单消费者全量消费且生产者仅写入单分区

Kafka分区数据分发问题排查与解决

操作步骤

1. 创建3分区Topic

$ kafka-topics.sh --topic fifth_topic --create --partitions 3 --replication-factor 1 --bootstrap-server=localhost:9092

2. 向Topic生产数据

$ kafka-console-producer.sh --bootstrap-server imeserver:9092 --topic fifth_topic

3. 启动同一消费组的3个消费者

$ kafka-console-consumer.sh --bootstrap-server imeserver:9092 --topic fifth_topic --group consumer_grp2 --from-beginning

$ kafka-console-consumer.sh --bootstrap-server imeserver:9092 --topic fifth_topic --group consumer_grp2 --from-beginning

$ kafka-console-consumer.sh --bootstrap-server imeserver:9092 --topic fifth_topic --group consumer_grp2 --from-beginning

4. 查看消费组信息

[ime@IMESERVER ~]$ kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group 'consumer_grp2'

GROUP           TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                           HOST            CLIENT-ID
consumer_grp2   fifth_topic     2          0               0               0               console-consumer-b6abaa2e-bf84-4919-8606-183dda964c17 /127.0.0.1      console-consumer
consumer_grp2   fifth_topic     0          0               0               0               console-consumer-2077d1c1-5a79-4b02-93b5-fd7c22d584e4 /127.0.0.1      console-consumer
consumer_grp2   fifth_topic     1          40              40              0               console-consumer-8df7c698-315a-463c-b0dd-13fa6932011f /127.0.0.1      console-consumer

问题现象

所有生产的数据仅写入单个分区,未分发至其他分区,无法实现消费组内消费者各自消费对应分区的预期效果。

解决方案

1. 生产者端指定分区键(Key)

Kafka默认分区逻辑:带Key的消息会按Key哈希值分配到对应分区;无Key消息默认轮询分发到各分区。但控制台交互模式下,默认发送的消息无Key,可能因会话保持导致一直写入同一分区。

解决方式:启动生产者时开启Key解析功能,按key:value格式发送消息:

$ kafka-console-producer.sh --bootstrap-server imeserver:9092 --topic fifth_topic --property parse.key=true --property key.separator=:

输入示例:

1:msg1
2:msg2
3:msg3

不同Key的消息会被分发到不同分区。

2. 重启生产者会话

若控制台生产者持续写入同一分区,可能是会话内轮询逻辑未触发,关闭当前生产者终端,重新启动新会话后发送消息,即可恢复轮询分发。

3. 验证Topic分区配置

确认Topic分区数及状态正常:

$ kafka-topics.sh --describe --topic fifth_topic --bootstrap-server localhost:9092

确保输出中Partitions字段显示为3,且各分区状态无异常。


内容的提问来源于stack exchange,提问作者Ahmed Shamma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:10:32