【发布时间】:2021-01-12 07:22:57
【问题描述】:
项目反应堆上有背压的概念,这对开发人员来说是透明的。想了解它的实际工作原理。
让我们使用下面的代码块
fun consumeMethod(data: Flux<String>) {
data
.flatMap { slowHttpCall(it) }
.subscribe()
}
我对执行流程的理解是否正确:
- 当我们调用 subscribe() 时,它会请求发布者发送所有数据。
- 上移至 flatMap,假设它将向发布者请求 32 个元素。
- 然后发布者将发送 32 个元素
- 再次向下移动到 flatMap,它将为 32 个元素调用 slowHttpCall(),而无需等到每个 http 调用完成。所以现在我们有 32 个正在进行的 http 调用
- 到此为止吧
此时,flatMap 会向发布者请求更多元素吗?还是会等到所有 32 个 http 调用完成后再请求更多?还是会等到 1 完成并请求 1?它会要求多少,为什么?
谢谢
【问题讨论】:
标签: kotlin project-reactor reactive