【发布时间】:2019-01-21 10:47:00
【问题描述】:
假设我有一个使用自定义对象列表的 API 操作。对于这些对象中的每一个,它都会调用一个创建 Mono 的服务方法。如何以惯用且非阻塞的方式从这些 Mono 对象创建 Flux?
我现在想出的是这个。我更改了方法名称以更好地反映其预期目的。
fun myApiMethod(@RequestBody customObjs: List<CustomObject>): Flux<CustomObject> {
return Flux.create { sink ->
customObjs.forEach {
service.persistAndReturnMonoOfCustomObject(it).map {
sink.next(it)
}
}
sink.complete()
}
}
此外,我是否需要订阅通量才能真正让它返回一些东西?
【问题讨论】:
-
@artem-bilan 给出的提示成功了。
-
这段代码是不是完全错误?大概 persistAndReturnMonoOfCustomObject 不会阻塞,因此所有 foreach 块都会立即执行,然后调用 sink.complete()。所以后面所有的 sink.next(it) (只有在persistAndReturnMonoOfCustomObject返回的mono完成时才执行)没有效果?
标签: spring kotlin mono flux project-reactor