Spring-Kafka 消费者的开箱即用功能可避免重复消息处理

Out-of-the-box capabilities for Spring-Kafka consumer to avoid duplicate message processing

我偶然发现了 Handling duplicate messages using the Idempotent consumer pattern

类似,但略有不同的是Transactional Inbox Pattern,它在交易INSERT into messages(无业务交易)成功结束后确认收到kafka消息,并进行后台轮询以检测此[中的新消息=22=] 并随后触发真正的业务逻辑(即消息监听器)。

现在我想知道,是否有一种 Spring 魔法来提供一个特殊的数据源配置来跟踪所有收到的消息并丢弃重复的消息传递? 否则,应用程序本身将需要注意确认 kafka 消息接收、消息状态更改和事件的数据清理 table、失败后重试以及可能还有很多其他我还没有想到的困难的事情.

框架不提供开箱即用的功能(没有适用于所有人的通用解决方案),但您可以通过过滤器实现它,以避免将此逻辑放入您的侦听器中。

https://docs.spring.io/spring-kafka/docs/2.7.9/reference/html/#filtering-messages