Abh*_*kar 4 java reactive-programming project-reactor
考虑以下 Flux
Flux.range(1, 5)
.parallel(10)
.runOn(Schedulers.parallel())
.map(i -> "https://www.google.com")
.flatMap(uri -> Mono.fromCallable(new HttpGetTask(httpClient, uri)))
Run Code Online (Sandbox Code Playgroud)
HttpGetTask 是一个Callable,在这种情况下其实际实现是无关紧要的,它对给定的URI进行HTTP GET调用,如果成功,则返回内容。
现在,我想通过引入人为延迟来减慢发射速度,这样就可以同时启动多达10个线程,但是每个线程都不会立即HttpGetTask完成。例如,说没有线程必须在3秒之前完成。我该如何实现?
如果要求确实是“不少于3s”,则可以使用来在Mono内部添加3秒的延迟。flatMapMono.fromCallable(...).delayElement(Duration.ofSeconds(3))