开启DLQ的Spring Cloud Stream Kafka消费端绑定层级重试配置不生效问题
问题原因
你配置的重试相关参数(maxAttempts、backOffInitialInterval、backOffMaxInterval等)属于Spring Cloud Stream 通用消费端配置项,不属于Kafka绑定的专属配置项,所以放置到spring.cloud.stream.kafka.bindings.<绑定名>.consumer路径下不会被识别。只有Kafka专属的配置(比如DLQ开关、DLQ名称、ACK模式、序列化配置等)才需要放到这个Kafka专属配置路径下。
解决方法
如果需要针对单个函数绑定配置独立的重试策略,需要把重试相关参数放到通用绑定的消费端配置路径下,格式为spring.cloud.stream.bindings.<绑定名>.consumer,完整的正确配置示例如下:
# 通用绑定配置:放置重试类通用参数 spring.cloud.stream.bindings.consumeTest-in-0: consumer: maxAttempts: 5 defaultRetryable: true backOffInitialInterval: 5000 backOffMaxInterval: 5000 backOffMultiplier: 1 # Kafka专属绑定配置:放置Kafka特有的配置项 spring.cloud.stream.kafka.bindings.consumeTest-in-0: consumer: batch-mode: false ackEachRecord: true dlqName: test.file.error enableDlq: true dlqProducerProperties.configuration.key.serializer: org.apache.kafka.common.serialization.StringSerializer dlqProducerProperties.configuration.value.serializer: org.apache.kafka.common.serialization.StringSerializer
你之前在spring.cloud.stream.default.consumer下配置生效,就是因为这个路径是全局通用消费端配置的正确层级,和单个绑定的通用配置路径属于同一类配置体系。
内容的提问来源于stack exchange,提问作者user518066
相关产品推荐
相关产品推荐

