Search code examples
spring-webfluxproject-reactorreactive-streams

project reactor - How to combine a Mono and a Flux?


I have a Flux and Mono and I'm not sure how to combine them so that I will have the mono value in each item of the Flux.

I'm trying this approach but it's not working:

Mono<String> mono1 = Mono.just("x");
Flux<String> flux1 = Flux.just("{1}", "{2}", "{3}", "{4}");

Flux.zip(mono1, flux1, (itemMono1, itemFlux1) ->  "-[" + itemFlux1 + itemMono1 + "]-").subscribe(System.out::println);

The outcome that I'm getting is -[{1}x]-

How could I combine them in order to get -[{1}x, {2}x, {3}x, {4}x]-?

Solution

  • Zip looks for pairs to add them together, your logic looks to change the values the flux.

    Mono<String> mono1 = Mono.just("x");
    Flux<String> flux1 = Flux.just("{1}", "{2}", "{3}", "{4}");   
    flux1.flatMap(x -> mono1.map(m -> x+m)).subscribe(System.out::println);