spring 在Sping Boot 2和3应用程序之间的跟踪传播中使用B3和W3C跟踪格式

mznpcxlj  于 2023-08-02  发布在  Spring
关注(0)|答案(1)|浏览(167)

我正在从Sping Boot 2迁移到Spring Boot 3,并在迁移过程中从Spring Cloud sleuth切换到io.micrometer:micrometer-tracing-bridge-brave。我注意到Sping Boot 2服务使用b3头来传播span & trace ID,而新的Spring Boot 3项目使用w3c traceparent头。
为了仍然能够通过我们自己的域 * 中的多个Sping Boot 2和Spring Boot 3服务 * 跟踪消息,我配置了域中的每个Spring Boot 3服务,使用this stackoverflow post继续使用“旧”B3格式:

@Bean
public Tracing braveTracing() {
    return Tracing.newBuilder()
            .propagationFactory(B3Propagation.newFactoryBuilder().injectFormat(B3Propagation.Format.SINGLE).build())
            .build();
}

字符串
这是可行的,但是我宁愿让Sping Boot 3应用程序识别 * 两种 * 格式,并(如果可能的话)传播这两种格式。原因是我们域之外的应用程序期望W3C头而不是B3头。有人知道这是否可能吗?

cetgtptt

cetgtptt1#

文件说这是不可能的:
由于默认的传播格式是w3c,在Sping Boot 3.0中我们不支持多种传播类型,您应该在Sleuth & Boot 2.x应用程序中设置spring.sleuth.propagation.type=w3c,b3,以便以2种格式发布头部。一个用于当前的 Boot 2.x应用程序(b3),一个用于新的Boot 3.x应用程序(w3c)。
Spring-Cloud-Sleuth-3.1-Migration-Guide
在我们的例子中,我们在OkHttpClient上添加了一个自定义拦截器来传播这两种格式。

相关问题