是否可以根据目标 URL 禁用 Spring Cloud Sleuth header 传播?

Is it possible to disable Spring Cloud Sleuth header propagation based on destination URL?

我们正在使用 Brave 的 ExtraFieldPropagation 功能在服务之间作为 HTTP headers.

传播自定义字段(例如 internal-only 请求标识符)

我们的一些服务在处理请求的过程中使用 RestTemplate 或 Feign 客户端向外部服务发出请求。由于 Sleuth 通过传播功能增强了所有 RestTemplate bean 和 Feign 客户端,这意味着外部服务接收 internal-only headers,我想避免这种情况。

我知道有两种解决方法可以避免这种行为,但都存在缺陷:

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

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