Как обработать «Пул соединения обнаружил ошибку» в Spring Webflux? - PullRequest
0 голосов
/ 18 февраля 2019

Я использую Webflux для выполнения Flux одновременных запросов через прокси к веб-серверу.В зависимости от прокси, иногда соединение не удается.Я хотел бы перехватить эти ошибки и обработать их (в идеале, возвращая пустой Mono объект)

2019-02-17 16:48:19.947 ERROR 32265 --- [or-http-epoll-8] r.n.resources.PooledConnectionProvider   : [id: 0xf7c8834b, L:/192.168.2.247:45536 - R:101.248.64.72/101.248.64.72:80] Pooled connection observed an error

io.netty.handler.proxy.ProxyConnectException: http, none, /101.248.64.72:80 => domain.com:443, io.netty.channel.unix.Errors$NativeIoException: syscall:read(..) failed: Connection reset by peer
at io.netty.handler.proxy.ProxyHandler.setConnectFailure(ProxyHandler.java:344) [netty-handler-proxy-4.1.31.Final.jar:4.1.31.Final]
at io.netty.handler.proxy.ProxyHandler.exceptionCaught(ProxyHandler.java:246) [netty-handler-proxy-4.1.31.Final.jar:4.1.31.Final]

Эти сообщения очень длинные и делают журнал нечитаемым позже, если требуется отладка.Я пытался перехватить его в соответствии с кодом запроса с помощью .onErrorResume(err -> Mono.empty()), но, похоже, это не предотвращает журналы ошибок.

Ниже приведен мой код:

return proxiedWebClient
    .get()
    .uri(uri)
    .exchange()
    .flatMap(clientResponse -> clientResponse.toEntity(String.class))
    .onErrorResume(error -> Mono.empty());

ожидаемый результат заключается в том, что ошибки соединения просто сбрасываются и не добавляются в Flux при последующем вызове Flux.merge.

...