java - 使用 Spring Kafka 框架时如何处理错误/异常?

标签 java error-handling apache-kafka spring-kafka

我无法找到如何为 spring kafka 消费者进行自定义错误处理。
我的要求是:

  • 对于任何反序列化错误,只需将错误和消息写入数据库。
  • 对于 @KafkaListener 下的任何执行错误方法,重试 3 次,然后将错误和消息写入数据库。

  • 从 spring 文档中,我发现,
    对于 1,我将不得不使用 ErrorHandlingDeserializer然后它将调用@KafkaListener 错误处理程序。
    2、框架提供SeekToCurrentErrorHandler处理消息重试。
    我不明白除了启用配置的重试之外,我还可以在哪里添加代码以将异常/消息写入数据库。

    最佳答案

    将恢复器添加到 SeekToCurrentErrorHandler

    new SeekToCurrentErrorHandler((rec, ex) -> {
        Throwable cause = ex.getCause();
        if (cause instanceof DeserializationException) {
            ...
        }
        else {
            ...
        }, new FixedBackOff(2000L, 2L));
    
    默认不重试反序列化异常;大多数其他人在调用恢复者之前都会重试。

    关于java - 使用 Spring Kafka 框架时如何处理错误/异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63748788/

    相关文章:

    c++ - 我应该抛出异常吗

    java - Spring Boot 和 Hibernate 多次调用同一个方法

    java - Android 蓝牙发现 API 无法在 Android 6.0 上运行

    r - 无法在 R 中加载任何包(无法加载共享对象)

    go - 如何在 sarama 中获得多个订阅

    elasticsearch - 从MSSQL vis kafka连接器到具有嵌套类型的elasticsearch的批量数据更新失败

    docker - Kafdrop - 无法使用 bitnami/kafka 连接到 Kafka 集群设置

    java - 使多个类可序列化是一个好习惯吗?

    java.text.ParseException : Unparseable date: "Wed Jan 11 00:00:00 CET 2012" 异常

    javascript - 还使用 jQuery 时如何处理 Javascript 错误?