【问题标题】:Pausing a kafka topic with multiple consumers暂停具有多个消费者的 kafka 主题
【发布时间】:2017-12-23 10:16:36
【问题描述】:

我在多个分区上有一个主题,并且该主题的 4 个消费者都在同一个消费者组中。如果一个消费者暂停主题,其他三个消费者是否会暂停。如果有办法做到这一点?如果是,则相反,如果一个人取消暂停,所有其他消费者都会取消暂停。

【问题讨论】:

  • 你试过了吗?

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


【解决方案1】:

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

【讨论】:

  • 很好的回复,谢谢。你知道是否有办法通过代理在消费者之间暂停,而不是我的每个消费服务实例都需要相互通信?
  • 不,没有办法做到这一点。这是 Kafka 的特性之一:客户端比代理更聪明:)
  • 很好的解释@ppatierno!谢谢!
猜你喜欢
  • 2017-01-26
  • 1970-01-01
  • 2016-09-01
  • 2018-12-31
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
相关资源
最近更新 更多