卡夫卡生产者缓冲

时间:2018-11-27 03:31:35

标签: apache-kafka

假设有一个生产者正在运行,而我在几分钟后运行了一个消费者。我注意到消费者将使用生产者产生的旧消息,但我不希望这种情况发生。我怎样才能做到这一点?代理中是否有任何配置参数可以设置并解决此问题?

1 个答案:

答案 0 :(得分:0)

这实际上取决于用例,您并未真正提供有关体系结构的太多信息。例如-使用者启动后,它是一个运行时间长的使用者,还是只是短时间醒来并消耗到达的新消息?

您可以采用以下任何一种方法:

  • 按时间戳过滤ConsumerRecord,因此您将自动丢弃在可配置的时间内生成的消息。
  • 在我们的团队中,我们使用临时组。也就是说,每次服务启动时,我们都会为消费者组生成一个新的组ID,将auto.offset.reset设置为latest
  • 寻求时间戳记-从kafka 0.10开始,您可以定位到某个位置。使用consumer.offsetsForTimes获取所需时间的每个主题分区的偏移量,然后使用consumer.seek获取给定的偏移量。
  • 如果您使用使用者组,但从未使用过kafka,则每次将使用者分配到主题分区时,它将根据auto.offset.reset策略开始使用...