Совместимость кафка send в разном окружении

Вопрос по использованию библиотек разных версий. Есть сервис отправляющий сообщение в кафку изначально сделанный в окружении spring-boot 3 с spring-kafka-3.1.6 Я пытаюсь заюзать этот сервис в spring boot 2 и не понимаю почему при исполнении ищет класс из версии библиотеки 3 версии. (в classpath все нужное, spring-kafka-2.8.11) По сути окружение имеет kafka template из 2й кафки.

В чём суть.

var message = new GenericMessage<>(bodyMessage,
        Map.of("kafka_messageKey", keyId());
kafkaTemplate.send(message).get();

kafkaTemplate.send

  1. в spring-kafka-3.1.6 возвращает CompletableFuture
  2. в spring-kafka-2.8.11 Возвращает ListenableFuture

По сути оба имлементируют интерфейс Future и есть метод get()

Но при исполнении kafkaTemplate.send(message)

я получаю ошибку

java.lang.NoSuchMethodError: 'java.util.concurrent.CompletableFuture org.springframework.kafka.core.KafkaTemplate.send(org.springframework.messaging.Message)

хотя если остановится и выполнить через evaluateExpression то ошибки нет.


Ответы (0 шт):