在升级到 Spring Boot 3 之前,我可以使用以下属性将密钥传播到其他微服务:
spring.sleuth.propagation-keys=my_key
现在升级到 spring boot 3 后,spring-boot-starter-sleuth 不再可用了。
谁能告诉我如何使用 Spring Boot 3 在微服务之间传播密钥?
提前谢谢您!
Spring Boot 3 中没有与
spring.sleuth.propagation-keys
直接等效的东西。但是,有一个替代方案
假设您使用带有依赖项的 Spring boot 版本
3.2.1
,使用 Micrometer 将自定义行李添加到 Spring Boot 3 中的 Brave 涉及几个步骤:
为您的自定义行李字段选择相关名称。该名称稍后将用于识别和访问行李价值。
默认情况下,Micrometer-Brave 自动使用 B3 标头(如
io.micrometer:micrometer-tracing-bridge-brave
和
X-B3-TraceId
)传播上下文。如果您希望自定义行李以类似方式传播,请考虑设置以下属性X-B3-SpanId
实现类型为
management.metrics.export.trace.propagation.type=B3
的 Spring bean。该 bean 为您的自定义行李字段配置名称和可选的传播格式。这是一个例子:
SingleBaggageField
使用注入到您的类或方法中的 Tracer bean 来与 行李。
设置值:
@Configuration
public class CustomBaggageConfig {
@Bean
public SingleBaggageField customBaggageField() {
return SingleBaggageField.create("my-custom-field")
.withPropagationFormat(BaggagePropagationFormat.W3C_TRACE_CONTEXT);
}
}
获取值
@Autowired
private Tracer tracer;
// ...
tracer.baggage().put("my-custom-field", "some-value");
考虑在方法上使用 @Observed 注释来自动启动跨度并注入 Tracer 以更轻松地访问行李。