У меня три параллельных вызова к трем различным конечным точкам, и только один из них вернет данные, которые мне нравится обрабатывать (ответ будет содержать данные только для enpoint-1, enpoint-2 или endpoint-3).
Если один из этих вызовов возвращает данные, я хотел бы немедленно вернуть эти данные и забыть о других вызовах ... ¿Как я могу добиться этого с помощью Spring Webflux?
У меня есть три звонка с:
Mono<MyResponse> result = client.post()
.uri('uri')
.body(Mono.just(request), MyRequest.class)
.retrieve()
.bodyToMono(MyResponse.class);
Добавлено в список моно
List<Mono<MyResponse>> calls
И я собираю все ответы и ищу первый элемент:
Flux.merge(calls).toStream().forEach(response -> myResponseList.addAll(response));
Но я хотел бы вернуть данные, как только любой из вызовов вернет что-то отличное от нуля, и не будет ждать завершения «слияния».
Спасибо!