У меня есть метод getIdEntrevista, который возвращает Flux со списком из 'id'.
Метод:
Код: Выделить всё
public Flux getIdEntrevista(String perfil){
return this.webClient.baseUrl("http://localhost:8081").build()
.get()
.uri("/api/orquestador/v1/entrevistador/public/entrevista_muestra_id?perfil="+perfil)
.retrieve()
.bodyToFlux(IdEntrevista.class);
}
Код: Выделить всё
[
{
"id": "6639711af44f9905dbdcd889"
},
{
"id": "663971fdd44ffdd5dbdcd88b"
},
...(29 elements more)
]
Код: Выделить всё
public Flux getPreguntas(String perfil, int limit) {
//logica para obtener el idEntrevista
//return this.interviewTestDao.getPreguntas("id",limit);
return interviewTestDao.getPreguntas("6639711af44f9905dbdcd889",3);
}
Код: Выделить всё
[
{
"pregunta": "¿Cuál es tu experiencia trabajando con tecnologías de Java y React en proyectos de desarrollo de software?"
},
{
"pregunta": "¿Has liderado el diseño e implementación de aplicaciones de software complejas utilizando JavaScript, ReactJS y Java?"
},
{
"pregunta": "¿Cómo garantizas la calidad del código, la mantenibilidad y escalabilidad de las aplicaciones de software en las que trabajas?"
}
]
Он должен соблюдать принцип неблокировки.
Я пробовал альтернативы, но они всегда давали мне ошибка.
Код: Выделить всё
public Flux getPreguntas(String perfil, int limit) {
return getIdEntrevista(perfil)
.flatMap(idEntrevista -> interviewTestDao.getPreguntas(idEntrevista.getId(), limit)
.collectList()
.flatMapMany(list -> {
if (list.isEmpty()) {
// Si el flujo está vacío, intenta nuevamente después de un período de tiempo
return Mono.error(new RuntimeException("Lista vacía"));
} else {
// Si el flujo no está vacío, emite la lista de preguntas
return Flux.fromIterable(list);
}
}))
.repeatWhenEmpty(repeat -> repeat.delayElements(Duration.ofSeconds(5)))
Подробнее здесь: https://stackoverflow.com/questions/784 ... found-spri