考虑以下 Flux
Flux.range(1, 5)
.parallel(10)
.runOn(Schedulers.parallel())
.map(i -> "https://www.google.com")
.flatMap(uri -> Mono.fromCallable(new HttpGetTask(httpClient, uri)))
HttpGetTask
是一个 Callable,在这种情况下其实际实现无关紧要,它对给定的 URI 进行 HTTP GET 调用并在成功时返回内容。
现在,我想通过引入人为延迟来减慢发射速度,这样最多 10 个线程同时启动,但每个线程都不会在 后立即完成HttpGetTask
完成。例如,说没有线程必须在 3 秒之前完成。我该如何实现?
最佳答案
如果要求确实“不少于 3 秒”,您可以使用 Mono.fromCallable 向
.flatMap
中的 Mono
添加 3 秒的延迟(...).delayElement(Duration.ofSeconds(3))
关于java - react 堆项目 : How to delay emission of (throttle) each element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43895899/