Функция Spring Cloud и Kafka

Я изо всех сил пытаюсь понять, как мне следует тестировать приложение, которое использует Kafka Binder, а также использует функцию Spring Cloud.

Давайте воспользуемся этим очень простым примером:

@SpringBootApplication
public class DemoKafkaApplication {

public static void main(String[] args) {
    SpringApplication.run(DemoKafkaApplication.class, args);
}

@Bean
public Function<String, String> uppercase() {
    return value -> value.toUpperCase();
}

}

И в моем application.yaml:

spring.cloud:
  stream:
    function:
      definition: uppercase
    bindings:
      uppercase-in-0:
      destination:  uppercase-topic

Как мне это проверить? Если бы я использовал @StreamListener и список каналов, я бы сделал что-то вроде этого:

 channels.uppercase().send(MessageBuilder.withPayload("test").build());

 messageCollector.forChannel(channels.uppercaseOutput()).poll(5, TimeUnit.SECONDS);

Однако для Spring Cloud Function это не так. Любая помощь очень приветствуется, так как я ничего не могу найти в официальных документах или образцах!




Ответы (1)


См. Пример «Тестирование с помощью встроенного брокера Kafka»:

https://github.com/spring-cloud/spring-cloud-stream-samples/tree/master/testing-samples/test-embedded-kafka

и документацию по Spring для Apache Kafka, чтобы получить более свежую информацию о встроенном брокере.

https://docs.spring.io/spring-kafka/docs/2.4.6.RELEASE/reference/html/#testing

person Gary Russell    schedule 08.05.2020
comment
большое спасибо Гэри. Я не был уверен, как лучше поступить, поскольку вижу разные способы тестирования, например: cloud.spring.io/spring-cloud-static/spring-cloud-stream/ - person nmarques; 21.05.2020
comment
Это зависит от того, что вы тестируете; упомянутая там старая тестовая программа подходит для базовых модульных тестов; новое средство связывания тестов подходит для базовых интеграционных тестов; но для полных интеграционных тестов (включая конфигурацию производителя / потребителя Kafka) вам нужен настоящий брокер. Альтернативой встроенному брокеру являются Testcontainers. - person Gary Russell; 21.05.2020