我有一个使用spring-cloud-sleuth进行跟踪的服务A。通过使用application.yml中的“ sleuth.propagation-keys”选项,我将sleuth设置为转发请求中的其他标头。
现在我要自定义ExtraFieldInjector: 仅当RestTemplate请求中不存在此标头时,才应将标头添加到传出请求中。
示例: 服务A application.yml具有sleuth.propagation-keys =“ Authorization” 服务A收到来自服务B的请求。此请求的标头为“授权”。
在请求处理期间,服务A向服务C发送请求,该服务需要基本授权。在调用TracingClientHttpRequestInterceptor之前,请求具有带有基本授权的Authorization标头。但是TracingClientHttpRequestInterceptor将跟踪范围(跟踪上下文)中的标头添加到请求中,并且“ Authorization”标头被覆盖。
我需要将这种行为更改为不覆盖标头(如果请求已包含标头的话)。
您能帮我理解吗,请问如何自定义ExtraFieldInjector来实现呢?或为其他解决方案提供建议和/或示例。