如果我有一个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?
答案 0 :(得分:0)
主题的单个分区只能由同一使用者组中的一个使用者实例使用。因此,如果消费者C1和C2都想从同一分区读取,则它们必须具有不同的ConsumerGroup。
按照该规则,您可以让C1用键K1过滤掉消息,而C2用键K2过滤消息。
另一个选择是(仅当您对生产者有控制权时)编写一个自定义分区程序,该分区程序将键K1的所有消息写入Partition0,将键K2的所有消息写入Partition1。这样,您可以使两个使用者实例/线程具有相同的consumerGroup并行读取两个分区。