![](/img/trans.png)
[英]Kafka Producer Stop sending message after certain amount of messages sent
[英]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.