К сожалению, невозможно узнать, сколько элементов будет испущено Flux, не прочитав весь Flux до завершения.
Поскольку ваш размер окна относительно мал, вы можете собрать все элементы, испускаемыеFlux в List
с использованием .collectList()
, а затем проверьте, пуст ли список перед отправкой запроса.
myFlux
.windowTimeout(5, Duration.ofSeconds(5))
.flatMap(window ->
// collect everything in the window into a list
window.collectList()
// ignore empty windows
.filter(list -> !list.isEmpty())
// send the request
.flatMap(list -> client
.post()
.body(Flux.fromIterable(list), MyClass.class)
.exchange()
.flatMap(response -> response.bodyToMono(MyResponse.class))))