如何在Spring Boot中通过application.properties配置Kafka消费者重试属性
在Spring Boot中,
application.yml 基础Kafka配置示例:
kafka: bootstrap-servers: localhost:9092 listener: concurrency: 10 ack-mode: MANUAL producer: topic: test-record key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.springframework.kafka.support.serializer.JsonSerializer retries: 3 orn-record: timeout: 3 #acks: 1 consumer: groupId: test-record topic: test enable-auto-commit: false key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
通过上述配置,我们可以避免在Spring Boot中使用java web(bean) based configuration,这是一个极具价值的优势。
问:我们能否通过application.properties/application.yml配置Kafka错误处理器以及Kafka消费者重试次数属性?
解答
可以通过配置文件实现这两类参数的配置,无需完全切换到Java Bean配置模式,具体配置方式如下:
- 消费者重试次数配置:
基于Spring Boot原生Kafka自动配置规则,直接新增重试相关参数即可,示例如下:
如果需要配置全局生效的重试规则,也可以把上述参数放在spring: kafka: consumer: # 最大重试次数 max-attempts: 5 # 两次重试间隔时间(单位:毫秒) retry-backoff-ms: 1000spring.kafka.listener路径下,优先级高于消费者侧的通用配置。如果你的项目使用自定义的kafka配置前缀,把spring.kafka替换为你自己的配置前缀即可。 - Kafka错误处理器配置:
如果使用Spring官方提供的默认错误处理器,直接指定实现类全限定名即可:
如果你有自定义错误处理逻辑,只需要给自定义错误处理类添加spring: kafka: listener: common-error-handler: org.springframework.kafka.listener.DefaultErrorHandler@Component注解交给Spring容器管理,再在上述配置中替换为你自己的实现类全限定名即可,不需要编写完整的Kafka Java配置类。
内容的提问来源于stack exchange,提问作者Arun Sai
相关产品推荐
相关产品推荐

