【发布时间】:2017-12-10 19:24:06
【问题描述】:
我使用 Kafka 消息代理和 Spring Kafka。
我使用默认的自动确认模型。有时我的@KafkaListener 需要大约 5 分钟才能完成工作。
我注意到当它发生时,Kafka 会产生重复的消息。 是否可以配置任何超时属性以防止 Kafka 重复相同的消息并让 Producer 等待(至少例如 10 分钟),而 Consumer 将完成工作?
【问题讨论】:
-
生产者和消费者是分离的——没有内置的方法可以阻止生产者发送更多消息,因为消费者很慢。您需要显示更多信息 - spring-kafka 的哪个版本,kafka 的哪个版本等;日志也会有帮助。我一般避免
auto.commit;通常最好让弹簧容器管理偏移量。 -
谢谢。我使用 Kafka 1.0.0 和 Spring Kafka 2.0.0.RELEASE。我可能错了,但是当消费者长时间工作时,生产者(或 Kafka 本身)似乎重复了相同的消息。这种情况下是否有任何超时属性,以便让 Consumer 工作至少 10 分钟,并且 Kafka 在此之前不会重复相同的消息?
-
另外,我没有明确使用 auto.commit。我使用默认的 Spring 配置