Reactor Flux with blockLast() Spring 引导集成测试从不启动

Reactor Flux with blockLast() Spring Boot integration test never spins up

我有一个 Kafka 处理 Spring 启动应用程序,它有一个在应用程序启动时运行的方法(使用 ApplicationRunner)并启动一个利用 blockLast() 的 Flux,因为我发现调用 subscribe() 不会发生任何事情,因为它不会阻塞主线程,我发现主线程可以(并且将会)在 Flux 发出任何元素之前完成。

既然我正在为此方法创建集成测试,我 运行 遇到的问题是 context/app 永远不会完全启动,所以我的测试代码永远不会执行,应用程序启动刚刚达到某个点并永远挂起。当我将 blockLast() 更改为 subscribe() 时,测试代码运行(虽然我不确定它测试的 Flux 代码是否以这种方式正确运行,到目前为止我只有一个简单的虚拟测试)并且我可以看到我使用 Flux 代码的主要方法已执行。有人对我如何在这种情况下创建集成测试有任何想法吗?

我有一个类似的问题,我通过将轮询任务分派给执行程序服务来规避它:

@PostConstruct
public void init() {
    this.executorService.submit(() -> pollingTask());
}