Kafka发布订阅模型与点对点模式差异相关疑问
Kafka消费者模型相关问题解答
疑问1解答
- partition1的5条消息会同时送达consumer1和consumer3,不会出现二者分摊消息的情况。Kafka中不同消费者组完全独立,消费行为互不干扰,每个消费者组都可以拿到对应分区的全量消息。
- Kafka的offset是按照「消费者组 + topic + 分区」三个维度独立维护的,完全会区分消费者所属的消费者组。你场景中consumerGroup1绑定partition1的offset和consumerGroup2绑定partition1的offset是两个完全独立的进度,consumer1的消费进度不会对consumer3产生任何影响。
- 该场景属于典型的pub-sub(发布订阅)模式。发布订阅模式的核心特征是同一条消息可以被多个订阅者独立消费,该场景中两个消费者组就是两个独立的订阅方,都能获取到partition1的全量消息,完全符合pub-sub的定义。
疑问2解答
这个说法整体正确,但存在两个需要满足的前提条件:
- 点对点模式的核心是同一条消息只会被一个消费者消费。当所有消费者都加入同一个消费者组时,Kafka会将topic的不同分区分配给组内不同的消费者,同一条消息只会推送给组内的一个消费者,确实可以实现点对点的效果。
- 前提1:消费者组内的消费者数量不能超过对应topic的总分区数,超出数量的消费者会处于空闲状态,无法消费到任何消息。
- 前提2:不要手动给消费者绑定固定分区,要使用Kafka默认的分区分配策略自动分配,避免出现多个消费者消费同一个分区导致重复消费的问题。
内容的提问来源于stack exchange,提问作者Sriharsha g.r.v
相关产品推荐
相关产品推荐

