暂停具有多个消费者的kafka主题

10

我有一个关于多个分区和同一消费者组中的4个消费者的主题。如果其中一个消费者暂停了主题,其他三个消费者会被暂停吗?是否有方法可以做到这一点?如果是,反之亦然,如果一个取消暂停,所有其他消费者都会取消暂停。


你试过了吗? - P.J.Meisch
1个回答

16
KafkaConsumer中的pause()和resume()操作不会在Kafka broker协议级别生成任何请求。调用pause()仅将已分配的分区本地标记为“不可获取”,从而将它们暂停。Kafka协议有一个Fetch请求,用于要求客户端从服务器获取记录(这是在poll()方法中发生的事情)。当分配的分区被暂停时,它们被视为“不可获取”,因此Fetch请求不会被发送。消费者和broker之间没有通信;broker不知道您在消费者上调用了pause()。所以答案是否定的:其他消费者不会被暂停,即使因为pause()是在分区级别而不是整个主题级别。

1
非常好的回复,谢谢。您知道是否有一种方法可以通过代理暂停所有消费者,而不是每个消费服务实例都需要相互通信吗? - mrmannione
2
不,没有办法做到那样。这是Kafka的一个特性:客户端比代理更智能 :) - ppatierno
1
非常好的解释 @ppatierno!谢谢你! - anhldbk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接