【发布时间】:2020-11-09 18:20:45
【问题描述】:
根据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#requestFactory? -
@chrylis-cautiouslyoptimistic- 我错过了,这种方法存在,thatnk 很多!
-
但是即使使用这种方法我也需要将
simpleClientHttpRequestFactory设置为RestTemplateBuilder#requestFactory,然后用RestTemplateBuilder#build获取RestTemplate,对吧? -
没错。
-
@chrylis-cautiouslyoptimistic-您能否将其发布为官方答案?这真的很有帮助
标签: java spring-boot prometheus resttemplate spring-boot-actuator