I have a Flux<List<ProgressEvent>>
where ProgressEvent
has a String message
and a double value
. I would like to generate a Flux<ServerSentEvent<String>>
where I generate 2 ServerSentEvent<String>
items in the target stream for 1 List<ProgressEvent>
in the source stream.
For now I did something like this:
Flux<List<ProgressEvent>> source = ...
Flux<ServerSentEvent<String>> target = source
.map(events -> ServerSentEvent.<String>builder() ...)
.mergeWith(source.map(events -> ServerSentEvent.<String>builder() ...))
But it feels a bit strange to read twice from the source stream. Is there a better way?
The easiest solution is flatMap
+ Flux.just
:
Flux<ServerSentEvent<String>> target = source.flatMap(events ->
Flux.just(ServerSentEvent.<String>builder() ..., ServerSentEvent.<String>builder() ...)
)