Перебирайте содержимое потока в методе, пока не будет найден непустой список. Весенний WebFLuxJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Перебирайте содержимое потока в методе, пока не будет найден непустой список. Весенний WebFLux

Сообщение Anonymous »

У меня возникли трудности с поднятием этой проблемы, поскольку я не нашел варианта использования, похожего на мой, я только начинаю использовать WebFLux.
У меня есть метод 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)
]
У меня есть другой метод getPreguntas, который возвращает Flux из функции репозиторияinterviewTestDao.getPreguntas, он имеет в качестве атрибутов идентификатор и предел, идентификатор главное.

Код: Выделить всё

    public Flux getPreguntas(String perfil, int limit) {
//logica para obtener el idEntrevista
//return this.interviewTestDao.getPreguntas("id",limit);
return interviewTestDao.getPreguntas("6639711af44f9905dbdcd889",3);
}
Результат этого.interviewTestDao.getPreguntas:

Код: Выделить всё

[
{
"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?"
}
]
Это мой случай: я хочу перебрать поток, полученный из getIdEntrevista, чтобы получить идентификатор и использовать его в методе репозитория, пока не найду непустой список. это потому, что некоторые идентификаторы не имеют связанных вопросов и возвращают пустые [].
Он должен соблюдать принцип неблокировки.
Я пробовал альтернативы, но они всегда давали мне ошибка.

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»