асинхронный вызов не работает с Callback() , программа ожидает завершения send() и не выполняет следующую строку немедленно. в коде,
ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, text);
...
producer.send(record,new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
logger.info("sent to kafka");
}
});
logger.info("ACEEVNTMNGR: i am not waiting for the return");
...
Код не выполняет следующую строку, а выполняет ее только после истечения времени ожидания соединения и отображения «отправлено в кафку». На самом деле есть проблема с подключением к kafka и получением ошибки:
"Connection to node -1 could not be established. Broker may not be available."
но я надеюсь, что из-за асинхронного вызова он не должен ждать до истечения времени ожидания, а выполнять
logger.info("ACEEVNTMNGR: i am not waiting for the return");
до истечения тайм-аута.
![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)
KafkaProducer:send возвращает Future<RecordMetadata>, но не вся работа, выполняемая функцией send, включается в Future.
Перед отправкой сообщения должны быть доступны метаданные (при первой отправке они должны быть получены).
Если метаданные недоступны или не могут быть получены, send будет длиться как минимум max.block.ms. По умолчанию это 60000 мс.
В вашем примере вы должны увидеть: ACEEVNTMNGR: i am not waiting for the return через 60 секунд.