Тайм-аут моно в FlatMap — не обнаружено ни одного элемента или сигнала терминала в течение 20 000 мс в FlatMap (и резервJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Тайм-аут моно в FlatMap — не обнаружено ни одного элемента или сигнала терминала в течение 20 000 мс в FlatMap (и резерв

Сообщение Anonymous »

Я работаю с WebClient Spring WebFlux, чтобы выполнить запрос POST, и возникла следующая ошибка:

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

java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 20000ms in 'flatMap' (and no fallback has been configured)
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:296) ~[reactor-core-3.6.7.jar:3.6.7]
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:281) ~[reactor-core-3.6.7.jar:3.6.7]
at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:420) ~[reactor-core-3.6.7.jar:3.6.7]
at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162) ~[reactor-core-3.6.7.jar:3.6.7]
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:270) ~[reactor-core-3.6.7.jar:3.6.7]
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:285) ~[reactor-core-3.6.7.jar:3.6.7]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[reactor-core-3.6.7.jar:3.6.7]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[reactor-core-3.6.7.jar:3.6.7]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]
Вот мой код:

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

public Mono invokeXXXService(XXXRequest request) {

return webClient
.baseUrl(XXXUrl)
.build()
.post()
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(request))
.exchangeToMono(clientResponse -> clientResponse.toEntity(XXXResponse.class))
.timeout(java.time.Duration.ofMillis(20000))
.onErrorResume(throwable -> {
LOG.error("Errors while getting res from XXX");
return Mono.just(ResponseEntity.status(500).body(null));
});
}
Похоже, что время ожидания запроса истекает через 20 секунд (20000 мс). У меня есть несколько вопросов:
  • Каковы могут быть потенциальные причины возникновения этого исключения TimeoutException в моем
    веб-клиенте WebFlux?
  • Может помочь увеличение значения тайм-аута, но лучше, если есть лучший способ справиться с этой проблемой. Существует ли рекомендуемый подход, обеспечивающий устойчивость моего кода к таким задержкам, например, использование механизмов повтора или автоматического выключателя? Если да, то как я могу реализовать это правильно, используя возможности Reactor?
Будем признательны за любые предложения или улучшения, которые помогут более изящно справиться с этим сценарием!

Подробнее здесь: https://stackoverflow.com/questions/790 ... within-200
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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