不同的使用者从Kafka主题的分区中的不同键中读取数据

时间:2020-09-25 13:47:26

标签: apache-kafka kafka-consumer-api kafka-producer-api

enter image description here

如果我有一个Kafka主题,其中我只有一个分区[P0],并且生产者使用不同的键[k1,k2]将数据写入分区[P1]。.假设[1-1,1-2 ]是键k1的值,而2-1,2-2,2-3是键k2的值。

我现在在主题的分区[P0]中有[1-1,1-2,2-1,2-2,2-3]

我是否可以有两个不同的使用者[C1,C2]监听主题中的partition [P0]并读取与不同键关联的值...如C1中仅读取k1的值,而C2仅读取k1的值值K2?

1 个答案:

答案 0 :(得分:0)

主题的单个分区只能由同一使用者组中的一个使用者实例使用。因此,如果消费者C1和C2都想从同一分区读取,则它们必须具有不同的ConsumerGroup。

按照该规则,您可以让C1用键K1过滤掉消息,而C2用键K2过滤消息。

另一个选择是(仅当您对生产者有控制权时)编写一个自定义分区程序,该分区程序将键K1的所有消息写入Partition0,将键K2的所有消息写入Partition1。这样,您可以使两个使用者实例/线程具有相同的consumerGroup并行读取两个分区。