You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理Spring中的WebClientRequestException连接拒绝异常?

解决Spring WebClient连接拒绝异常的方案

WebClientRequestException: Connection refused 本质是目标服务未启动、端口配置错误或网络不通导致的连接失败,常规的@ControllerAdvice可能不生效——因为这是Reactor异步流中的异常,需要针对性处理。

1. 先排查基础连接问题

  • 确认目标服务192.168.1.2:8080是否正常启动,端口与配置是否一致
  • 用telnet 192.168.1.2 8080或curl http://192.168.1.2:8080/health测试网络连通性
  • 检查防火墙、网关是否允许当前服务访问目标地址

2. 在WebClient请求链中直接处理异常

WebClient基于Reactor,需在异步流中用onErrorResume等操作符捕获异常,避免异常扩散:

webClient.get()
         .uri("http://192.168.1.2:8080/health")
         .retrieve()
         .bodyToMono(String.class)
         .onErrorResume(WebClientRequestException.class, ex -> {
             // 自定义处理逻辑:日志记录、返回默认值或封装自定义异常
             log.error("连接目标健康检查服务失败: {}", ex.getMessage());
             return Mono.just("服务状态未知");
         });

3. 全局统一处理WebClient异常

通过自定义ExchangeFilterFunction实现全局异常拦截,所有WebClient请求都会生效:

@Bean
public WebClient webClient() {
    return WebClient.builder()
            .filter((request, next) -> next.exchange(request)
                    .onErrorResume(WebClientRequestException.class, ex -> {
                        log.error("全局捕获WebClient连接异常: {}", ex.getLocalizedMessage());
                        // 封装成自定义业务异常,后续可被全局异常处理器捕获
                        return Mono.error(new ServiceUnavailableException("依赖服务暂时无法访问"));
                    }))
            .build();
}

4. 适配Reactive场景的全局异常处理器

若要让@ControllerAdvice生效,需确保方法返回Reactor类型(Mono/Flux),且异常能传播到Controller层:

@RestControllerAdvice
public class GlobalReactiveExceptionHandler {

    @ExceptionHandler({WebClientRequestException.class, ServiceUnavailableException.class})
    public Mono<ResponseEntity<String>> handleServiceConnectionError(Exception ex) {
        log.error("服务连接异常", ex);
        return Mono.just(ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE)
                .body("服务暂时不可用,请稍后重试"));
    }
}

注意:如果在WebClient请求链中已经用onErrorResume消费了异常,异常就不会传播到Controller层,此时全局处理器不会触发,需根据业务场景选择处理方式。

内容的提问来源于stack exchange,提问作者Kaushal Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 21:55:08