【发布时间】:2019-12-12 16:48:30
【问题描述】:
我正在使用 Spring Webflux 接收文件 (DICOM) 和一个将这些文件转换为 Json 字符串 (DCM4CHE) 的库。 该库采用 InputStream 条目进行转换。 我想使用 ByteArrayInputStream 来保持堆栈的反应性。这是正确的还是我需要将调用包装在 Mono.defer(...) 或使用非反应性微服务?
public Mono<ServerResponse> toJson(ServerRequest request) {
var flux = request.body(BodyExtractors.toParts())
.ofType(FilePart.class)
.map(FilePart::content)
.flatMap(DataBufferUtils::join)
.map(DataBuffer::asByteBuffer)
.map(ByteBuffer::array)
.map(ByteArrayInputStream::new)
.map(theLib::convertToJson);
return ServerResponse.ok().body(BodyInserters.fromPublisher(flux,String.class));
}
换句话说,ByteArrayInputStream 是否是某种阻塞代码?
谢谢
【问题讨论】:
标签: java spring-webflux