Topic xxx not present in metadata after 60000 ms


完整異常堆棧信息:

org.springframework.kafka.KafkaException: Send failed; nested exception is org.apache.kafka.common.errors.TimeoutException: Topic test not present in metadata after 60000 ms.

  at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:574)
  at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:389)
  at com.yang.custom.kafka.kafka.ProducerDemo.send(ProducerDemo.java:37)
  at com.yang.custom.kafka.CustomKafkaApplicationTests.contextLoads(CustomKafkaApplicationTests.java:23)
  at java.util.ArrayList.forEach(ArrayList.java:1255)
  at java.util.ArrayList.forEach(ArrayList.java:1255)
Caused by: org.apache.kafka.common.errors.TimeoutException: Topic test not present in metadata after 60000 ms.

 

問題出現:

向kafka broker 中發送消息

    @Autowired
    private KafkaTemplate kafkaTemplate;


    public void send() {
        // 構造方法:ProducerRecord(String topic, Integer partition, Long timestamp, K key, V value, Iterable<Header> headers)
        ProducerRecord<Integer, String> producerRecord = new ProducerRecord(
                "test", // topic
                null,         // 不指定partition
                System.currentTimeMillis(), // 發送消息的事件戳
                null,               // key不指定
                "這是一條帶headers的消息",  // msg
                new RecordHeaders().add(new RecordHeader("ttl", "20".getBytes(StandardCharsets.UTF_8)))
        );
        kafkaTemplate.send(producerRecord);
    }

 

原因:

  Jackson包版本沖突導致

 

項目Springboot:2.4.2

引入spring-kafka版本:2.6.5

spring-kafka依賴的Jackson版本為 2.11.3

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.11.3</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.11.3</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>

springboot自帶依賴的Jackson版本:2.11.4

 

 

導致 spring-kafka 依賴的 Jackson 2.11.3版本失效,實際依賴的是2.11.4版本。

 

解決方案:

在項目中添加Jackson依賴,覆蓋springboot和spring-kafka的Jackson依賴

   <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.3</version>
        </dependency>

 

 

END.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM