【发布时间】:2018-10-28 21:20:53
【问题描述】:
我正在从 3 张灰度图像构建彩色图像。我使用 rsocket 为每个色带发出 3 个单独的(并行)请求,它返回一个 Mono<byte[]>。我需要将所有 3 字节数组收集为一个列表,以便我可以正确构建图像。但是,我对如何在下一个反应操作中识别字节数组属于哪个波段感到困惑。
这里是一些示例代码:
return Flux.just(redRequest, blueRequest, greenRequest)
.parallel()
.flatMap(client::getBytes) // calls the remote service to get the bytes for the given color band
.sequential()
.collectList()
.map(response -> {
byte[] redBytes = response.get(0); //???
}
我创建了一个包装类来保存原始请求、字节数组和带标识符,这样我就可以在每个操作中传递所有对象,但是因为我的 rsocket 客户端的响应是 Mono,我只能实现(可能错误的术语)通过在 map 或 flatMap 中调用字节数组,此时我无法访问我的包装类,并且我不确定字节数组属于哪个波段。
我可以通过简单地不在并行请求中调用客户端来解决此问题吗?我是否可以保证项目将按照我在Flux.just() 中定义的顺序通过链传播。
基本上上一张图,我只是很想知道哪个字节数组属于哪个色带。
【问题讨论】:
标签: java spring reactive-programming project-reactor reactor