【问题标题】:Spring for Apache Kafka: Unrecognized producer configuration - 'delivery.timeout.ms'Apache Kafka 的 Spring:无法识别的生产者配置 - 'delivery.timeout.ms'
【发布时间】:2020-02-02 03:39:03
【问题描述】:

我有一个带有 Spring for Apache Kafka 的 Spring Boot 应用程序,用于向 kafka 集群上的主题发送消息。我已经为 delivery.timeout.ms 自动装配了一个属性,在应用程序启动并配置了生产者之后,应用程序日志显示该属性的值未设置并给出警告:"WARN [task-scheduler-1] org.apache.kafka.clients.producer.ProducerConfig [] --- The configuration 'delivery.timeout.ms' was supplied but isn't a known config"

我检查了我的 POM 并确认我正在使用以下两个依赖项:

<dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>2.1.0</version>
        </dependency>

我还确认该属性存在于 2.1.0 版本中:https://kafka.apache.org/21/javadoc/org/apache/kafka/clients/producer/ProducerConfig.html

我看到帖子对其他属性有类似警告,提到它可以忽略;但是,我的应用程序遇到了不良行为,可以通过根据其描述设置此属性来纠正。

【问题讨论】:

  • this?
  • @user7 是的,我相信是的。正如我提到的其他帖子提到它可以被忽略。但是,就我而言,它似乎根本没有设置。

标签: java apache-kafka spring-kafka kafka-producer-api


【解决方案1】:

看起来您的 kafka-clients 版本覆盖不起作用。我刚刚对其进行了测试,它运行良好(使用 spring-kafka 2.2.9 和 2.1.1 客户端):

ProducerConfig values: 
    acks = 1
    batch.size = 16384
    bootstrap.servers = [localhost:9092]
    buffer.memory = 33554432
    client.dns.lookup = default
    client.id = 
    compression.type = none
    connections.max.idle.ms = 540000
    delivery.timeout.ms = 123456
    enable.idempotence = false
    ...

尝试按照 instructions in the Spring for Apache Kafka reference manual 覆盖所有 kafka 客户端库。

【讨论】:

  • 你是对的。查看 maven 依赖树表明,正在从某个地方拉入一个更旧版本的库,而 Ive 指定的那个被排除在外。
猜你喜欢
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
相关资源
最近更新 更多