如何自定义ExtraFieldInjector的逻辑

时间:2019-09-16 10:40:47

标签: spring spring-cloud spring-cloud-sleuth

我有一个使用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来实现呢?或为其他解决方案提供建议和/或示例。

0 个答案:

没有答案