卡夫卡既有分区,也有消费者群体

时间:2015-08-14 13:54:16

标签: partitioning apache-kafka producer-consumer

我们可以对同一主题使用分区和使用者组。因此,我们想要创建一个具有分区的主题,然后为其创建多个使用者,并且其中2-3将是通用侦听所有消息(需要在消费者组中以便消息未处理多次)然后一个特定消费者的消费者。

分区和消费者是否相互排斥?

2 个答案:

答案 0 :(得分:1)

使用高级消费者API,您无法将消费者实例固定到特定分区,但没有什么可以阻止您使用高级API的一组消费者和使用简单API的另一组消费者主题。

通过这种方式,您可以让一个简单的消费者从消费者群体中的特定分区和一组高级消费者消费,消费所有分区中的消息。

答案 1 :(得分:1)

kafka 0.8.x的高级消费者不允许您指定分区。它从所有分区读取数据,并执行复杂的故障检测和重新平衡。根据API重新设计 - https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Client+Re-Design#ConsumerClientRe-Design-Allowmanualpartitionassignment

,可能会在未来版本中支持它

如果您需要阅读特定主题和分区 - 请使用SimpleConsumer(它需要手动引导/偏移/排他性/错误处理)。

或者您可以使用高级使用者并按分区过滤数据(如果您接受开销)。

另外,作为一个选项,您可以重新设计主题,将数据写入单独的主题而不是“特定分区”。