[英]Fail the process if any failure while producing record on Kafka topic
每当KafkaProducer因任何原因在kafka主题上生成记录时,我想使该过程失败。
我正在发送如下记录:
for(String message : messages) {
producer.send(new ProducerRecord<>(topic, message), (metadata, ex) -> {
if (ex != null) {
throw new RuntimeException(ex.getMessage());
}
});
}
我在通话中抛出异常。 因此,我的期望是该过程将失败,显然for循环将继续执行。
一旦回调出现异常,如何使发送过程失败?
首先,如果发送命令成功,则变量“ ex”将为null,因此,只要查看成功包含的代码,就不会抛出RuntimeException。
如果要强制错误检查是哪种行为,建议您停止所有经纪人,然后尝试发送消息。 一段时间后,当发生超时时,您将能够在Callback中看到异常。
总结一下:
Successful send: (metadata != null, ex == null)
Failed send: (metadata == null, ex != null)
PS切记在引发异常时关闭生产者:
for(String message : messages) {
producer.send(new ProducerRecord<>(topic, message), (metadata, ex) -> {
if (ex != null) {
producer.close();
throw new RuntimeException("Exception Happened: " + ex.getMessage());
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.