Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以基于目标URL禁用Spring Cloud Sleuth头传播?_Spring_Spring Boot_Spring Cloud Sleuth - Fatal编程技术网

是否可以基于目标URL禁用Spring Cloud Sleuth头传播?

是否可以基于目标URL禁用Spring Cloud Sleuth头传播?,spring,spring-boot,spring-cloud-sleuth,Spring,Spring Boot,Spring Cloud Sleuth,我们使用Brave的ExtraFieldPropagation功能在服务之间传播自定义字段(例如,仅限内部的请求标识符)作为HTTP头 在处理请求的过程中,我们的一些服务使用RestTemplate或外部客户端向外部服务发出请求。由于Sleuth使用传播特性增强了所有restemplatebean和外部客户机,这意味着外部服务只接收内部头,这是我想要避免的 我知道有两种变通方法可以避免这种行为,这两种方法都有缺陷: 手动实例化客户机对象,而不是使用@Bean,这样Sleuth就不会添加拦截器。

我们使用Brave的
ExtraFieldPropagation
功能在服务之间传播自定义字段(例如,仅限内部的请求标识符)作为HTTP头

在处理请求的过程中,我们的一些服务使用
RestTemplate
或外部客户端向外部服务发出请求。由于Sleuth使用传播特性增强了所有
restemplate
bean和外部客户机,这意味着外部服务只接收内部头,这是我想要避免的

我知道有两种变通方法可以避免这种行为,这两种方法都有缺陷:

  • 手动实例化客户机对象,而不是使用
    @Bean
    ,这样Sleuth就不会添加拦截器。我在这里看到的缺点是,开发人员必须记住遵循这种模式以避免信息泄漏,这很难实施
  • 添加一个拦截器,从传出请求中删除这些头。这里的缺点是a)我需要为
    restemplate
    和外国客户分别设置拦截器(不是什么大买卖);b) 看起来伪客户端拦截器没有办法影响执行顺序(参见javadoc),因此我不能保证新拦截器将在Sleuth拦截器之后/最后运行

有没有一种方法可以定制Sleuth(例如,通过某种注入器bean),以便在向传出HTTP请求中注入头之前,我可以推断请求的目的地?我看到了关于的文档,但这些文档似乎不再存在于spring boot>=2中。我在Brave中似乎找不到等效的构造。

您可以对给定的URL取消采样,这意味着头将被传播,但不会发送到Zipkin。您不能仅对某些URL禁用检测,因为我们正在检测所有注册为bean的组件。

非常感谢您的关注,Marcin!