我有一个Project Reactor链,它包含一个阻塞任务(网络调用,我们需要等待响应).我想同时运行多个阻塞任务.
似乎可以使用ParallelFlux或flatMap(),裸骨示例:
Flux.just(1)
.repeat(10)
.parallel(3)
.runOn(Schedulers.elastic())
.doOnNext(i -> blockingTask())
.sequential()
.subscribe()
Run Code Online (Sandbox Code Playgroud)
要么
Flux.just(1)
.repeat(10)
.flatMap(i -> Mono.fromCallable(() -> {blockingTask(); return i;}).subscribeOn(Schedulers.elastic()), 3)
.subscribe();
Run Code Online (Sandbox Code Playgroud)
这两种技术的优点是什么?一个比另一个更受欢迎吗?还有其他选择吗?