我想在 Spring WebFlux 中使用 WebClient 来调用一些 url,然后将所有的 monos 放到 Flux 中。当我调用 Flux.blockLast 时,我无法得到结果。
@Test
public void reactiveGetTest() {
long start = System.currentTimeMillis();
List<String> results = new ArrayList<>();
List<Mono<String>> monos = IntStream.range(0, 500)
.boxed()
.map(i -> reactiveGet("https://www.google.com/"))
.collect(Collectors.toList());
Flux.mergeSequential(monos)
.map(results::add)
.blockLast();
System.out.println("result: " + results.size());
System.out.println("total time: " + (System.currentTimeMillis() - start));
}
private Mono<String> reactiveGet(String url) {
return WebClient.create(url)
.get()
.retrieve()
.bodyToMono(String.class);
}
我想得到一个大小为 500 的列表,但为 0!