Прохождение состояния при чтении Part Flux - PullRequest
0 голосов
/ 31 августа 2018

У меня есть приложение Boot 2.x, использующее Webflux, где я передаю поток 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
    }
});

Спасибо!

...