kafka同一个group 消费两个topic吗_Kafka学习之消费者
概述
消费方式
pull模式从broker中读取数据,避免push方式造成的consumer来不及处理消息的问题。但是会造成空轮询(为了避免此种情况,当放回空消息时,消费者会等待一个timeout后再去轮询)。
分区分配策略
一个consumer group中有多个consumer,一个topic中有多个partition,相同消费群组内不可以消费相同的partition,涉及到partition如何分配。由参数partition.assignment.strategy指定,默认是range策略。
分类
-
RoundRobin———按组
RoundRobin策略的工作原理:将所有主题的分区组成 TopicAndPartition 列表,然后对 TopicAndPartition 列表按照 hashCode 进行排序。
使用RoundRobin策略有两个前提条件必须满足:
-
同一个Consumer Group里面的所有消费者的num.streams必须相等; 每个消费者订阅的主题必须相同。
-
Range———按主题
Range策略是对当前主题而言的,首先对同一个主题里面的分区按照序号进行排序,并对消费者按照字母顺序进行排序。
策略触发
当以下事件发生时,Kafka 将会进行一次分区分配:
-
同一个 Consumer Group 内新增消费者 消费者离开当前所属的Consumer Group,包括shuts down 或 crashes 订阅的主题新增分区
上一篇:
IDEA上Java项目控制台中文乱码