【发布时间】:2019-01-11 14:19:03
【问题描述】:
这个问题类似于Spring reactive streaming data from regular WebClient request,不同之处在于我没有立即从我的 WebClient 获取 JSON 数组,而是像这样:
这个 JSON 对象可能非常大(~100MB),因此需要处理并流式传输到客户端,而不是解析。这是我似乎能够使语义正确的唯一方法:
{
"result-set":{
"docs":[
{
"id":"auhcsasb1005_100000"
},
{
"id":"auhcsasb1005_1000000"
},
{
"id":"auhcsasb1005_1000001"
},
{
"id":"auhcsasb1005_1000002"
},
...
...
{
"EOF":true
}
]
}
}
WebClient.create()
.get()
.retrieve()
.bodyToMono(DontKnowWhatClass.class)
.flatMapMany(resultSet -> Flux.fromIterable(resultSet.getDocs()))
但这意味着我要反序列化 100MB 或更多的内存,然后从中创建通量。我想知道的是:我错过了一些重要的东西吗?我可以以某种方式从这样的对象创建一个 Flux 吗?遗憾的是,我现在有办法影响结果集对象的呈现方式。
【问题讨论】:
-
那么,100 MB 有什么问题?
-
@k-nicholas 有 20 个并发请求,它突然变成了 2GB。它无法扩展。
标签: spring-webflux