【问题标题】:Is there a way to provide KafkaListener/topic-specific configuration via application.properties?有没有办法通过 application.properties 提供 KafkaListener/topic-specific 配置?
【发布时间】:2020-03-29 15:19:32
【问题描述】:

在 Spring Boot 项目中使用 Spring for Apache Kafka 时,是否可以通过 application.properties 中的条目配置不同的侦听器?

例如,如果我在主题 foobar 上有单独的听众,我可以有类似的条目:

spring.kafka.producer.foo.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer
spring.kafka.producer.bar.value-serializer=some.other.Serializer

我以为我在某处看到过这样的例子,但我似乎再也找不到了。

【问题讨论】:

    标签: spring spring-boot apache-kafka spring-kafka


    【解决方案1】:

    很遗憾,生产者端没有支持,但您可以在消费者端提供支持(从 2.2.4 开始)。请打开一个 GitHub 新功能问题,我们可以看看。

    对于消费者方面,请参阅properties attribute on the annotation

    @KafkaListener( ... properties={ "value.deserializer:${a.deserializer}", ... }, ...)
    
    @KafkaListener( ... properties={ "value.deserializer:${b.deserializer}", ... }, ...)
    

    您可以在那里设置任意 Kafka 消费者属性;它们将取代消费者工厂中定义的任何同名属性(如果消费者工厂支持属性覆盖)。

    【讨论】:

    • 谢谢,加里。我意识到我的问题有点令人困惑,因为我谈到了 Listeners,但随后使用了 Producers/Serializers 作为示例。但我实际上是指消费者和生产者。
    • 没问题;我猜到了;现在你需要配置多个DefaultProducerFactory bean(可以用属性值填充),但我们应该不难提供一种机制来覆盖每个KafkaTemplate 的生产者属性,甚至更复杂的东西,例如按主题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2021-10-22
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多