我正在从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()
中定义的顺序通过链传播。
基本上在最后一张图中,我只是真的想要能够知道哪个字节数组属于哪个色带。
答案 0 :(得分:2)
用颜色字段将对象中的每个请求包裹起来,并更改发送这些请求的管道中的MTKView
部分:
flatMap