我有一个使用Webflux的Boot 2.x应用程序,其中我使用Parts
以@RequestBody Flux<Part>
的流量进行流式传输。
我的问题是我需要阅读第一个Part
,使用该Part
中的内容初始化一个对象,然后将该对象传递给第二个Part
中使用。在确保阅读完每个可用部分的同时,我该如何做?
我当前的解决方案是使用groupBy
,但是这样做会触发等待,直到所有部分都完成为止。
这是我要做的事的一个例子:
parts.scan( new Foo(), (foo, part) -> {
if(part.name().equalsIgnoreCase("first_part"))
{
Jackson2JsonDecoder jackson2JsonDecoder = new Jackson2JsonDecoder();
Mono<Metadata> metadata = jackson2JsonDecoder.decodeToMono(part.content(), ResolvableType.forClass(Metadata.class), null, null);
// Here's my problem. How do I call foo.init(metadata) in a non-blocking way while still returning foo so it can be used by the next part?
}
else if(part.name().equalsIgnoreCase("second_part"))
{
// Use initialized foo from part 1 to push second_part's DataBuffer Flux
}
});
谢谢!