是的,如果Kafka不可用,该
.send()呼叫将失败,但是如果您异步发送它,则不会通知任何人。您可以指定将来最终完成时要执行的回调。完整的接口规范在这里:https
:
//kafka.apache.org/20/javadoc/org/apache/kafka/clients/producer/Callback.html
从此处的官方Kafka
Javadoc:https
:
//kafka.apache.org/20/javadoc/index.html?
org/apache/kafka/clients/producer/
KafkaProducer.html
完全非阻塞的用法可以利用Callback参数提供将在请求完成后调用的回调。
> ProducerRecord<byte[],byte[]> record = new> ProducerRecord<byte[],byte[]>("the-topic", key, value);>producer.send(myRecord,> new Callback() {> public void onCompletion(Recordmetadata metadata,> Exception e) {> if(e != null) {> e.printStackTrace();> } else {> System.out.println("The offset of the record we> just sent is: " + metadata.offset());> }> }> });


