簡體   English   中英

向 Kafka 生產者發送消息顯示消息已成功發送,但管道中沒有任何內容

[英]Sending message to Kafka producer shows message was successfully sent but there is nothing in the pipeline

將我們的 Kafka 版本從 2.5.1 升級到 3.2.0 后遇到了一個令人困惑的問題。

我正在按照以下內容向 kafka 生產者發送消息。

final ProducerRecord<String, String> producerRecord = new ProducerRecord<>(
   "my_topic",
   this.toString()
);
Future<RecordMetadata> kafkaResponse = producer.send(producerRecord);
// producer.flush();
String kafkaSuccessStatus = kafkaResponse.isDone() 
  ? "Message sent" 
  : "Message didn't send";
System.out.println(kafkaSuccessStatus);

以上打印出消息已成功發送。 但是,隊列中沒有數據。 此外,我收到一個奇怪的警告。

org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Connection to node -1 could not be established. Broker may not be available.

這似乎與正在發送的消息不一致。 關於這里可能出現什么問題的任何想法?

順便說一句,這一切以前都在 2.5.1 中工作,但我們被迫升級。

該代碼不是檢查是否發送了消息,而是檢查 Java 未來是否已完成執行。

您應該使用接受回調的send()版本來獲取有關異步發射成功的更多反饋(請參閱https://kafka.apache.org/32/javadoc/org/apache/kafka/clients/producer/ KafkaProducer.html#send-org.apache.kafka.clients.producer.ProducerRecord-org.apache.kafka.clients.producer.Callback- ),或者您可以使用get()阻止並期望RecordMetadata實例或異常炸毀你當前的線程。

閱讀上面send()方法的 javadoc 以了解更多詳細信息。

暫無
暫無

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

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