我们在微服务中添加了分布式跟踪。当我们将RestTemplate
和TraceID
用在Spring头文件中时,我们使用SpanId
时效果很好。
但是当我们开始使用OAuth2RestTemplate
时,它就停止工作了。在进行调查时,我发现对于OAuth2RestTemplate
,默认情况下spring不会在标头中添加TraceID
和SpanId
。
我发现有人建议添加一些无效的拦截器:此代码段。
//
*
@Bean public UserInfoRestTemplateCustomizer userInfoRestTemplateCustomizer() {
return oAuth2RestTemplate - > {
List <
ClientHttpRequestInterceptor >
interceptors = new ArrayList < > (
oAuth2RestTemplate.getInterceptors());
interceptors.add(tracingClientHttpRequestInterceptor);
oAuth2RestTemplate.setInterceptors(interceptors);
};
}
请注意,我们使用的是Spring侦探版本“ 2.0.1.RELEASE”。
我们代码中的代码片段:
@Autowired @Qualifier("customAuth2RestTemplate") OAuth2RestTemplate oAuth2RestTemplate; public void invokeCustomService(String resourceUrl, HttpEntity httpEntity) {
retryTemplate.execute(arg0 - > {
oAuth2RestTemplate.exchange(resourceUrl, getCustomHttpMethod(),
httpEntity, getcustomClass());
return null;
});
}