首页 > 解决方案 > 使用 Spring Cloud Stream Kafka binder 重复消费消息

问题描述

我们有几个使用 Spring Boot 和 Spring Cloud Stream Kafka binder 的微服务在它们之间进行通信。

有时,我们会观察到消费者收到的重复消息的爆发——通常是在首次消费和处理(成功)之后的几天。

虽然我知道 Kafka 不保证只交付一次,但它看起来仍然很奇怪,因为在经纪人和服务的日志中没有重新平衡事件或任何“可疑”活动。由于消费者正在与外部 API 进行交互,因此使其具有幂等性有点困难。

任何提示可能是重复的原因?我应该寻找什么来解决这个问题?

我们使用的是 Kafka 代理 1.0.0,而这个特定的消费者使用 Spring Cloud Stream Binder Kafka 2.0.0,它基于 kafka-client 1.0.2(其他服务的版本可能有点不同)。

标签: spring-bootapache-kafkaspring-kafkaspring-cloud-streamspring-cloud-stream-binder-kafka

解决方案


当你问这样的问题时,你应该展示你的配置。

最好的猜测是经纪人的offsets.retention.minutes

使用现代代理版本(自 2.0 起),默认为 1 周;旧版本只有一天。


推荐阅读