Возможен обратный вызов не зарегистрировавшись для springkafka-шаблона метода отправки

Вопрос задан: 9 месяцев назад Последняя активность: 9 месяцев назад
up 0 down

Я хочу, чтобы зарегистрировать обратный вызов для будущего объекта возвращается с весны kafkatemplate.send().

ListenableFuture<SendResult<K, V>> org.springframework.kafka.core.KafkaTemplate.send(String topic, K key, V data)

Я призываю ниже метода на будущий результат описанного выше способа.

void org.springframework.util.concurrent.ListenableFuture.addCallback(ListenableFutureCallback<? super T> callback)

нравится:

kafkaTemplate.send(topicname, keyString, data).addCallback(
    new ListenableFutureCallback<SendResult<String, Data>>() {
        @Override
        public void onFailure(Throwable ex) {
            logger.error("Failure while sending message in kafka.", ex);
        }

        @Override
        public void onSuccess(SendResult<String, Data> result) {
            logger.info("Successfully sent message to kafka");
        }

    });

Предположим, если send() завершает фактическую отправку очень быстро и результат уже установлен в будущем, прежде чем мне регистрация обратного вызова. Моя регистрация обратного вызова будет происходить после того, как future.set() операция. Таким образом, существует вероятность того, что мой обратный вызов не начал выполняться. Разве это возможно?

Я знаю, что такая возможность очень меньше. Тем не менее, это может произойти? Если да, то это решение.

1 ответ

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 0 down accepted

Нет, будущие сделки с что сразу же вызвав функцию обратного вызова после добавления, если она уже была удовлетворена - посмотреть на исходный код SettableListenableCallback.addCallback().