自定义Spring RestTemplate似乎不使用Spring Sleuth发送跟踪?

问题描述

我们使用的是Spring Boot 2.3.3和spring-cloud-gcp-starter-trace 1.2.5.RELEASE,我们希望将跟踪信息发送到GCP中的Stackdriver,以用于自定义RestTemplate实例。

对于RestTemplate以外的其他组件,这似乎工作正常。我们可以从我们的rest控制器和消息总线集成等。我们没有在application.yaml中进行任何特定的配置,这些配置应禁用RestTemplate中的跟踪拦截器。

自定义RestTemplate的定义如下:

@Bean(name = "customHttpClient")
public HttpClient customHttpClient() {
    HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
    httpClientBuilder.setMaxConnPerRoute(20);
    httpClientBuilder.setMaxConnTotal(40);
    httpClientBuilder.evictExpiredConnections();
    httpClientBuilder.evictIdleConnections(5L,TimeUnit.SECONDS);
    httpClientBuilder.setConnectionTimetoLive(20L,TimeUnit.SECONDS);
    return httpClientBuilder.build();
}

@Bean(name = "customrestTemplate")
RestTemplate customrestTemplate() {
    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
    factory.setHttpClient(customHttpClient());

    return new RestTemplate(factory);
}

我们还尝试了将RestTemplateCustomizer注入到customrestTemplate bean中,但这似乎没有任何区别:

@Bean(name = "customrestTemplate")
RestTemplate customrestTemplate(ObjectProvider<RestTemplateCustomizer> restTemplateCustomizers) {
    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
    factory.setHttpClient(customHttpClient());

    restTemplateCustomizers.orderedStream().forEach(customizer -> customizer.customize(restTemplate));
    return restTemplate;
}

如何为“ customrestTemplate” bean启用跟踪?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)