gpt4 book ai didi

spring - kafka消费者中死信队列的好选择是什么

转载 作者:行者123 更新时间:2023-12-03 22:03:37 27 4
gpt4 key购买 nike

我正在写一个 kafka 消费者。消费者的工作主要是创建多个 db 实体并在处理有效负载后保存它们。我正在尝试编码以处理在使用数据时可能发生的错误。
为此,我可以想到 2 个选项(在 Spring 生态系统中)

  • 将失败的消息发送到死信卡夫卡主题
  • 将失败消息发送到新的数据库表(错误表)

  • 失败的消息需要再次处理。

    案例1:
    我再次必须编写另一个@KafkaListner,它会监听死信主题并处理消息。这里的问题是我无法更好地控制如何启动重新处理流程。 (就像调度程序一样)因为一旦数据发布到死信主题中,KafkaListener 就会开始处理数据。

    在案例 2 中:
    我可以更好地控制重新处理流程,因为我可以编写一个 REST 端点或调度程序来尝试重新处理失败的消息。
    (在这里,我在使用哪个数据库方面进退两难。关系或某些键值存储)

    我基本上遇到了设计困境,无法确定 Spring 生态系统中哪种方法更好。

    欣赏回应。

    最佳答案

    我认为使用 Kafka 是最好的解决方案。

    Because KafkaListener will start processing the data as soon as the data is published in the dead letter topic.


    您可以通过设置 autoStartup 来控制行为。在该监听器上设置为 false,然后使用 KafkaListenerEndpointRegistry 启动/停止监听器如所须:
    registry.getListenerContainer(myListenerId).start();
    或者您可以使用自己的 KafkaConsumer (由消费者工厂创建)并根据需要轮询尽可能多的记录,并在完成后关闭消费者。

    关于spring - kafka消费者中死信队列的好选择是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58247971/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com