读取助焊剂时通过状态

时间:2018-08-30 22:29:46

标签: spring-webflux project-reactor

我有一个使用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
    }
});

谢谢!

0 个答案:

没有答案