卡夫卡如何安排多个主题的消费者消费

时间:2019-12-09 13:47:52

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

我有一个kafka用户,该用户正在使用多个主题(30+)和每个主题6个分区。我想学习单个消费者如何从多个主题(和分区)中消费,以及如何安排要消费哪个主题,分区,偏移量?

我正面临消费者滞后的问题,并想从多个主题中详细了解消费者的消费方式。

Will it start multiple threads ? 
Will it schedule itself between partitions ?
What kind of scheduling it will use 

我的问题与单个消费者从多个主题中消费有关。假设所有主题均加载了1M条记录,而单个使用者必须处理这些记录。它将以什么顺序从主题中读取内容(我是指首先选择哪个主题/分区,等等)

任何指向kafka内部构件的链接都会有所帮助吗?

1 个答案:

答案 0 :(得分:0)

  

它将启动多个线程吗?

对于Java Consumer API,否。仅创建一个线程(心跳线程除外)来获取记录。

  

它会在分区之间调度自己吗?

提取程序按主题分区进行批处理。假设您有三个主题:t1,t2和t3,每个主题都有两个分区。它可能最终会像t3-1,t3-0,t2-0,t2-1,t1-0,t1-1之类。

  

它将使用哪种计划

基本上,它使用循环策略来确保公平。

似乎没有内部链接公开它们。有关详细信息,请参见SubscriptionStatePartitionStates