В методе
producer.send(ProducerRecord<K,V> record, new Callback() {
public void onCompletion(RecordMetadata metadata, Exception e) {...}
});
обратный вызов вызывается после подтверждения отправки.Обратный вызов выполняется в фоновом потоке ввода-вывода, поэтому он должен быть быстрым (не блокировать его)
По умолчанию отправка выполняется асинхронно, и этот метод немедленно возвращается после сохранения записи в буфере.записей, ожидающих отправки.Это позволяет отправлять много записей параллельно, не блокируя ожидание ответа после каждой из них.
Send возвращает RecordMetadata, который указывает раздел, куда отправляется запись, назначенное ей смещение и временную метку.
Это асинхронный подход, в то время как вы можете сделать то же самое, используя синхронный способ:
producer.send(record).get();