【问题标题】:spring cloud stream kafka binder enableDlq is not working as I expectedspring cloud stream kafka binder enableDlq 没有按我预期的那样工作
【发布时间】:2021-05-21 09:09:24
【问题描述】:

我正在使用带有模式注册表的 spring-cloud-stream kafka binder。(不是 kakfa 流) 我要做的是当不可反序列化的消息进入输入主题时,将不可反序列化的消息发送到 dlq。

所以我尝试了下面的配置,但 spring cloud stream 应用程序不断无限重试并说

原因:org.apache.kafka.common.errors.SerializationException: 为 id -1 反序列化 Avro 消息时出错

spring.cloud.stream:
  function:
    definition: functionName
  bindings:
    functionName-in-0:
      group: group-name
      destination: input-topic
  kafka:
    binder:
      brokers: localhost:9092
    bindings:
      functionName-in-0:
        consumer:
          enableDlq: true
          dlqName: input-topic-dlq
          autoCommitOnError: true
          autoCommitOffset: true
    default:
      consumer:
        configuration:
          schema.registry.url: http://localhost:8081
          key.deserializer: org.apache.kafka.common.serialization.StringDeserializer
          value.deserializer: io.confluent.kafka.serializers.KafkaAvroDeserializer

我做错了什么?请帮忙。

【问题讨论】:

    标签: spring-boot apache-kafka spring-cloud-stream spring-cloud-stream-binder-kafka


    【解决方案1】:

    请不要在多个地方问同一个问题,这是浪费您和我们的时间;正如我已经在 Gitter 上回答的那样:

    这个错误发生在堆栈中太远了,spring-cloud-stream 无法帮助解决它。您需要使用ListenerContainerCustomizer @Bean 来配置SeekToCurrentErrorHandlerDeadLetterPublishingRecoverer 并配置ErrorHandlingDeserializer

    https://docs.spring.io/spring-kafka/docs/current/reference/html/#error-handling-deserializer

    https://docs.spring.io/spring-kafka/docs/current/reference/html/#seek-to-current

    https://docs.spring.io/spring-kafka/docs/current/reference/html/#dead-letters

    也就是说,Stack Overflow 是解决此类问题的更好媒介。

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多