使用 SimpleClientHttpRequestFactory 时,如何使用标准 Spring Boots 的 Prometheus RestTemplate 指标制作自定义 RestTemplate?

How to make custom RestTemplate to instrument with standard Spring Boots' Prometheus RestTemplate metrics when using SimpleClientHttpRequestFactory?

根据 docs,如果 RestTemplate 使用 RestTemplateBuilder 创建然后注入,则会获取标准的 http 客户端指标。但是,我们有一个自定义的 RestTemplate bean 初始化,它不使用 RestTeplateBuilder,而是使用 new 启动 RestTemplate 并将 SimpleClientHttpRequestFactory 作为参数传递。

@Bean(name = "RestTemplateWithoutTimeOut")
    public RestTemplate restTemplateWithoutTimeOut() {
        SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
        int timeout = 5 * 60 * 1000;
        simpleClientHttpRequestFactory.setConnectTimeout(timeout);
        simpleClientHttpRequestFactory.setReadTimeout(timeout);
        RestTemplate restTemplate = new RestTemplate(simpleClientHttpRequestFactory);
        restTemplate.setErrorHandler(new ErrorHandler());
        List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
        interceptors.add(new LoggingInterceptor());
        interceptors.add(new SecureInterceptor());
        return restTemplate;
    }

我们如何为这种 RestTemplate 初始化注入指标收集器(与默认收集的指标相同)?

RestTemplateBuilder 公开了用于自定义 RestTemplate 上可用的几乎每个旋钮的方法。您可以只调用 requestFactory 并传递自定义工厂,然后构建一个具有所有常用工具的 RestTemplate 实例。