Асинхронный вызов не работает с Callback() в коде

асинхронный вызов не работает с 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]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
0
0
46
1

Ответы 1

KafkaProducer:send возвращает Future<RecordMetadata>, но не вся работа, выполняемая функцией send, включается в Future.

Перед отправкой сообщения должны быть доступны метаданные (при первой отправке они должны быть получены). Если метаданные недоступны или не могут быть получены, send будет длиться как минимум max.block.ms. По умолчанию это 60000 мс.

В вашем примере вы должны увидеть: ACEEVNTMNGR: i am not waiting for the return через 60 секунд.

Другие вопросы по теме

Похожие вопросы

Преобразование строки в переменную для использования в общем вызове
Функции обратного вызова JavaScript.. запутался
Oauth2 — URL-адрес перенаправления на iis на сервере 2012 R2
Обратный вызов в моем коде не работает и возвращает результат без применения функции обратного вызова
Не удалось преобразовать очередь обратного вызова для использования промисов
Вероятность того, что обратный вызов не будет зарегистрирован для метода отправки шаблона springkafka
Javascript Как «Promise.all» на Java 8 (возможно, с лямбда-выражениями)
Как я могу заставить PHP выполнять несколько вызовов из массива в скрипт и ждать завершения каждой функции, прежде чем двигаться дальше?
Redux/saga: Как запустить действие (поместить) внутри обратного вызова без каналов (использовать саги как обычные функции генератора)
Как я могу установить несколько обратных вызовов MQTT и подписаться на несколько тем в одном фрагменте кода?