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

Spring Boot 3.0.1+版本MetricsWebClientFilterFunction失效求替代方案

Spring Boot 3.0.1+ 适配WebClient指标收集方案

在Spring Boot 3.x版本中,MetricsWebClientFilterFunction已被移除,官方改用基于Micrometer Observation API的ObservationWebClientFilterFunction来实现WebClient请求的指标收集,以下是适配步骤:

核心替换方案

直接用ObservationWebClientFilterFunction替代旧类,调整初始化逻辑:

import io.micrometer.observation.ObservationRegistry;
import org.springframework.web.filter.reactive.ObservationWebClientFilterFunction;
import org.springframework.boot.actuate.autoconfigure.metrics.AutoTimeProperties;

// 注入或获取已配置的ObservationRegistry实例
ObservationRegistry observationRegistry = ...;

// 初始化观测过滤器,指定指标名称和自动计时配置
ObservationWebClientFilterFunction metricsFilter = new ObservationWebClientFilterFunction(
        observationRegistry,
        "packetExtractorMetrics",
        new AutoTimeProperties()
);

// 将过滤器添加到WebClient构建器
WebClient webClient = WebClient.builder()
        .filter(metricsFilter)
        .build();

自定义扩展(可选)

如果需要对指标标签、观测逻辑做自定义扩展,可以实现ObservationConvention接口:

import io.micrometer.observation.ObservationConvention;
import io.micrometer.observation.transport.RequestReplySenderContext;
import org.springframework.http.client.reactive.ClientHttpRequest;
import org.springframework.http.client.reactive.ClientHttpResponse;

public class CustomClientObservationConvention implements ObservationConvention<RequestReplySenderContext<ClientHttpRequest, ClientHttpResponse>> {

    @Override
    public String getName() {
        return "packetExtractorMetrics";
    }

    // 重写其他方法自定义标签、描述等
    @Override
    public String getContextualName(RequestReplySenderContext<ClientHttpRequest, ClientHttpResponse> context) {
        return context.getRequest().getURI().getPath();
    }
}

然后修改过滤器初始化代码:

ObservationWebClientFilterFunction metricsFilter = new ObservationWebClientFilterFunction(
        observationRegistry,
        new CustomClientObservationConvention(),
        new AutoTimeProperties()
);

说明

Spring Boot 3.x基于Spring Framework 6.x,全面切换到Micrometer Observation API统一处理指标和追踪,旧的MetricsWebClientFilterFunction因API迭代被移除。ObservationWebClientFilterFunction会自动收集请求耗时、状态码、请求URI等核心指标,完全覆盖旧类的功能,同时支持更灵活的扩展能力。

内容的提问来源于stack exchange,提问作者Kiran Mekala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:35:03