java - react 堆项目 : How to delay emission of (throttle) each element?

标签 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)))

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/

相关文章:

java - react 堆项目 : How to control Flux emission

java - 使用 eclipse 进行 mySql 连接创建基于 Android 的应用程序时遇到问题

java - 使用 javamail 从 hotmail 发送?

reactive-programming - 延迟项目发射,直到项目从另一个 observable 发射

javascript - 可观察事件限制/在内存中只保留一个事件/背压

spring - 如何避免Spring Reactor中类似订阅者重复映射操作?

java - 当用户输入负值时如何退出程序 - Java

java - 样式化 Struts2 文本字段标签

javascript - 从 RxJS promise 流

java - 使用 Spring Data R2DBC 查找/修改/保存或更新插入