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 订阅的主题新增分区
概述 消费方式 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 订阅的主题新增分区
经验分享 程序员 微信小程序 职场和发展