【发布时间】:2017-12-23 10:16:36
【问题描述】:
我在多个分区上有一个主题,并且该主题的 4 个消费者都在同一个消费者组中。如果一个消费者暂停主题,其他三个消费者是否会暂停。如果有办法做到这一点?如果是,则相反,如果一个人取消暂停,所有其他消费者都会取消暂停。
【问题讨论】:
-
你试过了吗?
标签: java apache-kafka kafka-consumer-api
我在多个分区上有一个主题,并且该主题的 4 个消费者都在同一个消费者组中。如果一个消费者暂停主题,其他三个消费者是否会暂停。如果有办法做到这一点?如果是,则相反,如果一个人取消暂停,所有其他消费者都会取消暂停。
【问题讨论】:
标签: java apache-kafka kafka-consumer-api
KafkaConsumer 中的 pause() 和 resume() 操作不会在协议级别向 Kafka 代理生成任何请求。 调用 pause(),只是将分配的分区设置为暂停,在本地将它们标记为“不可获取”。 Kafka 协议有一个 Fetch 请求,要求从客户端到服务器获取记录(这是在 poll() 方法中发生的事情)。当分配的分区暂停时,它们被认为是“不可提取的”,因此不会发送提取请求。消费者和代理之间没有通信;经纪人不知道您在消费者身上调用了 pause()。所以答案是否定的:即使 pause() 处于分区级别而不是整个主题级别,其他消费者也不会被暂停。
【讨论】: