【问题标题】:How to make custom RestTemplate to instrument with standard Spring Boots' Prometheus RestTemplate metrics when using SimpleClientHttpRequestFactory?使用 SimpleClientHttpRequestFactory 时,如何使用标准 Spring Boots 的 Prometheus RestTemplate 指标制作自定义 RestTemplate?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 2018-12-18
    • 2019-12-07
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2014-03-10
    相关资源
    最近更新 更多