检查 KafkaProducer 是否关闭。 (Java, 0.9)

Checking if KafkaProducer is closed. (Java, 0.9)

如果在生产者关闭时发送消息,则可能会产生严重错误。这会导致我的应用程序无限期挂起。

我想通过引发错误来适当地处理这种情况,但是 API 中似乎没有用于检查生产者是否已关闭的方法。

https://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html

有什么办法吗?

您可以以异步方式(也就是在不同的线程中)调用生产者,以便您的主程序继续执行。 然后你可以在生产者线程周围添加一些时间测量,并引发异常,将错误打印到日志,将未发送的消息存储到数据库等并终止线程。