@Wan-Derer
Зобанели на Хабре, волки́ ;((

Как в Reactor Netty обрабатывать ошибки внутри Flux?

У меня есть Flux, в котором может быть, а может не быть error:
Flux<String> myFlux = Flux.create(sink -> {
  try {
    while (someCondition) {
      sink.next(someMethod());
    }
    sink.complete();
  } catch (Exception e) {
    sink.error(e);
  }
});


Теперь мне надо его отправить через Reactor Netty. В нормальной ситуации (когда нет error) я отправляю так:
public Publisher<Void> sendMyFlux(HttpServerRequest req, HttpServerResponse resp) {

  return resp
      .status(HttpResponseStatus.OK)
      .addHeader(ACCESS_CONTROL_ALLOW_ORIGIN, "*")     // CORS
      .sendString(myFlux);
}


А как сделать так чтобы при наличии error внутри Flux мне отправлять другой код (4хх) и не содержимое Flux, а текст с ошибкой?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
Вам нужно.
- Сделать флюкс не строки, а какого-то своего типа, который будет содержать статус и саму строку
- Добавить логику, при которой статус будет зависить от содержания флюкса

Тогда методом .onErrorResume можно будет поймать исключение, обработать и добавить к ответу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы