java - 为什么 Producer.send(record).get() 有效,但 Producer.send(record, callback) 不起作用

标签 java apache-kafka kafka-consumer-api kafka-producer-api

我正在使用 kafka 向消费者发送消息。但是由于某种原因,当我使用 Producer.send(record, new MyProducerCallback()); 向主题发送记录时,该主题的使用者不会收到该记录。但是,当我使用 RecordMetadata m = Producer.send(record).get(); 发送记录时,记录会完美到达消费者。回调方法曾经有效,但现在不再有效。有人遇到过这种情况吗?

最佳答案

您的回调将在后台线程中触发,同时您不会阻塞主线程,因此程序能够结束而不执行它。

如果您想确保回调被调用,您必须

  1. .send().get() future
  2. Thread.sleep() 主线程。

并且不要忘记 close() Producer 对象

关于java - 为什么 Producer.send(record).get() 有效,但 Producer.send(record, callback) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50873413/

相关文章:

java - Spring Boot配置优先级

java - 我如何跟踪并完整报告符号链接(symbolic link)链?

java - 从 0.7 升级到 0.8.1.1 后生成嵌入式 kafka 队列时出错

python - 使用fastavro从Kafka反序列化Avro

javascript - kafka-node - 将参数传递给异步函数consumer.on();

hadoop - Spark 流 : Issues when processing time > batch time

java - FileUtils 类型的方法 deleteQuietly(File) 未定义

java - 使用字符串数组进行二分查找查询

apache-kafka - spring kafka setErrorHandler deprecated replacement (boot 2.6.4)

apache-kafka - 消息处理失败后Kafka消费者恢复