【发布时间】:2023-03-03 11:12:02
【问题描述】:
我在玩 Kafka,试图掌握它。我们需要做的一件事是运行负载平衡的服务器集 - 用于冗余/高可用性/等 - 然后相互独立地重新启动。应该很简单。
我的发现有点奇怪。如果我正在运行一个正在处理一组消息的 Kafka 消费者,然后在处理消息时将第二个消费者 添加到同一个消费者组,我会得到整个消息集多次而不是一次。
例如,以下是我运行的日志文件:https://gist.github.com/sazzer/5604d0652ff14533654c8b543942c10e
这是使用 2 个主题 - kafka-live 和 kafka-bulk。每个主题有 2 个分区 - 每个消费者一个。然后测试将 20 条消息添加到批量队列,然后将 10 条消息添加到实时队列。 (这实际上是在测试其他东西,但我只是重新使用了设置)
从日志中您会看到每条消息总共被处理了 3 次,而不是像我预期的那样只处理一次。
代码如下:https://gist.github.com/sazzer/c67e4db9a04aac8c0d46bbc21188775d
这是使用 Spring Boot 和 Spring Kafka,并且 - 除了这个案例 - 它刚刚工作。
当新的消费者出现时,我是否遗漏了一些东西来阻止它重播所有消息?或者这只是我必须处理的事情?
干杯
【问题讨论】:
标签: apache-kafka kafka-consumer-api spring-kafka