Весенний кафка производителя не работает асинхронно - PullRequest
1 голос
/ 03 февраля 2020

Я использую неблокирующую (Asyn c) отправку сообщения в Kafka следующим образом:

    ListenableFuture<SendResult<Integer, String>> future = template.send(record);
    future.addCallback(new ListenableFutureCallback<SendResult<Integer, String>>() {

        @Override
        public void onSuccess(SendResult<Integer, String> result) {
            handleSuccess(data);
        }

        @Override
        public void onFailure(Throwable ex) {
            handleFailure(data, record, ex);
        }

    });

Это прекрасно работает, когда действие отправки работает.

Но когда возникает проблема с подключением (например, сервер отключен), результат становится не асинхронным , а метод остается заблокированным до конца периода max.block.ms.

1 Ответ

2 голосов
/ 03 февраля 2020

Это естественно в Асине c Производитель КАФка. У вас есть два варианта

  1. Либо уменьшите max.block.ms, но не уменьшайте его слишком сильно.
  2. Вы можете подождать acks

Вы также можете создать функцию обратного вызова для onCompletion ()

...