【问题标题】:Spring Cloud Function and KafkaSpring Cloud Function 和 Kafka
【发布时间】:2020-08-23 22:42:19
【问题描述】:

我很难理解我应该如何去测试一个使用 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 列表,我会这样做:

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

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

但是,对于 Spring Cloud Function,情况并非如此。非常欢迎任何帮助,因为我在官方文档或示例中找不到任何内容!

【问题讨论】:

    标签: spring-cloud-stream spring-cloud-stream-binder-kafka spring-cloud-function


    【解决方案1】:

    请参阅“使用嵌入式 Kafka 代理进行测试”示例:

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

    以及 Spring for Apache Kafka 文档以获取有关嵌入式代理的更多最新信息。

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

    【讨论】:

    • 非常感谢加里。我不确定最好的方法是什么,因为我看到了不同的测试方法,例如:cloud.spring.io/spring-cloud-static/spring-cloud-stream/…
    • 这取决于你在测试什么;那里引用的旧测试绑定器可用于基本单元测试;较新的测试绑定器适用于基本的集成测试;但是对于完整的集成测试(包括 Kafka 生产者/消费者配置),您需要一个真正的代理。嵌入式代理的替代方案是Testcontainers
    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 2019-05-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多