使用 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
实例。
根据 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
实例。