簡體   English   中英

Kafka生產者未來超時

[英]Kafka producer future get timeout

我正在嘗試處理失敗,以防生產者無法向 Kafka 發送消息:

try {
    Future<RecordMetadata> res = producer.send(new ProducerRecord<>(topic, msg.key(), msg));
    log.info("Waiting for confirmation from kafka for message : \n {}",msg.toString());
    record = res.get(30,TimeUnit.SECONDS);
    log.info("Successfully produced message : msg")
} catch (InterruptedException | ExecutionException | TimeoutException e) {
    log.error("The following message wasnt sent to kafka because of an error : {}", msg.toString(), e);
}

當我嘗試向不存在的主題生成消息時,我看到以下錯誤:

java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Topic just_fake_topic  not present in metadata after 60000 ms.
at org.apache.kafka.clients.producer.KafkaProducer$FutureFailure.<init>(KafkaProducer.java:1307) ~[kafka-clients-2.5.0.jar!/:na]
at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:962) ~[kafka-clients-2.5.0.jar!/:na]
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:862) ~[kafka-clients-2.5.0.jar!/:na]
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:750) ~[kafka-clients-2.5.0.jar!/:na]
at com.xx.xx.produceMessage.handleMessage(produceMessage.java:27) ~[classes!/:0.0.1-SNAPSHOT]
at 
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
    Caused by: org.apache.kafka.common.errors.TimeoutException: Topic just_fake_topic not present in metadata after 60000 ms.

正如我在未來 object 的 get 方法中配置的那樣,我在 60 秒后得到超時,而不是 30 秒。

我還嘗試在我的 kafka.properties 中配置metadata.max.idle.ms=30000max.block.ms=30000因為我也收到了大約 5 分鍾的以下警告,但它沒有幫助:

2020-06-28 14:31:26.009  WARN 10291 --- [ad | producer-1] org.apache.kafka.clients.NetworkClient   : [Producer clientId=producer-1] Error while fetching metadata with correlation id 695 : {just_fake_topic =UNKNOWN_TOPIC_OR_PARTITION}

知道為什么嗎?

異常可能是從 Kafka 網絡線程中拋出的。

https://jaceklaskowski.gitbooks.io/apache-kafka/content/kafka-producer-internals-Sender.html

也許提供一個回調作為發送的第二個參數。 注意:回調將在 kafka 網絡線程上運行。

Kafka Producer:使用回調處理異步發送中的異常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM