我使用 Spring boot 3.1.x 进行一些 shell 交互。我想将文本从方法流式传输到控制台。
我尝试过这样的事情:
@ShellMethod(key = "stream")
public Flux<String> streamMe(){
List<String> cities = List.of("London", "Paris", "Rome", "Amsterdam","Boston");
Flux<String> flux = Flux.fromIterable(cities);
return flux.delayElements(Duration.ofSeconds(2));
}
但是当从 shell 调用它时,我在屏幕上得到输出 FluxConcatMapNoPrefetch
Spring Shell 期望命令完成,因此它可以将结果打印到控制台。但是,当您返回具有持续元素流的 Flux 时,它可能不会在交互式 shell 中按预期运行。
将元素流打印到控制台的一种方法是订阅该流并单独处理结果。