试图理解java生产者api。完成意味着什么?帮助我理解同样的道理。
参考文献:https://kafka.apache.org/0110/javadoc/index.html?org/apache/kafka/clients/producer/kafkaproducer.html
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());
}
}
});
1条答案
按热度按时间e4yzc0pl1#
in方法
一旦确认发送,就会调用回调。回调在后台i/o线程中执行,因此应该很快(不要阻止它)
默认情况下,发送是异步的,一旦记录存储在等待发送的记录的缓冲区中,此方法将立即返回。这允许并行发送多个记录,而无需阻塞以等待每个记录之后的响应。
send返回recordmetadata,指定将记录发送到的分区、分配给它的偏移量和时间戳。
这是一种异步方法,而您可以使用同步方法执行相同的操作:
producer.send(record).get();