【发布时间】:2020-02-03 11:24:20
【问题描述】:
我正在写一个卡夫卡消费者。消费者的工作主要是关于创建多个数据库实体并在处理有效负载后保存它们。我正在尝试编写代码来处理使用数据时可能发生的错误。 为此,我可以想到 2 个选项(在 Spring 生态系统中)
- 将失败的消息发送到 dead-letter-kafka-topic
- 将失败消息发送到新的数据库表(错误表)
失败的消息需要重新处理。
案例 1: 我还要再写一个@KafkaListner,它会监听死信主题并处理消息。这里的问题是我无法更好地控制如何启动重新处理流程。 (就像一个调度器)因为KafkaListener会在数据一发布到dead letter topic中就开始处理数据。
情况 2: 我可以更好地控制重新处理流程,因为我可以编写一个 REST 端点或调度程序来尝试重新处理失败的消息。 (在这里我对使用哪个数据库感到两难。关系或一些键值存储)
我基本上陷入了设计困境,无法确定 Spring 生态系统中哪种方法更好。
感谢您的回复。
【问题讨论】:
标签: spring apache-kafka kafka-consumer-api spring-kafka dead-letter