带 Spring Boot 3的钥匙

zzwlnbp8  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(87)

在升级到spring Boot 3之前,我可以使用以下属性将密钥传播到其他微服务:
spring.sleuth.propagation-keys=my_key
现在,升级到spring Boot 3后,spring- Boot -starter-sleuth不再可用。
有没有人能告诉我如何在Sping Boot 3中在微服务之间传播密钥?
在此先谢谢您!

fcwjkofz

fcwjkofz1#

在Sping Boot 3中没有与spring.sleuth.propagation-keys直接等效的东西。但是,有一个替代方案
假设您正在使用Sping Boot 版本3.2.1和依赖项io.micrometer:micrometer-tracing-bridge-brave,在Sping Boot 3中使用Micrometer向Brave添加自定义行李涉及几个步骤:
1.定义自定义行李字段
为您的自定义行李字段选择一个相关名称。此名称将用于稍后识别和访问行李价值。
1.配置传播(可选)
默认情况下,Micrometer-Brave使用X-B3-TraceIdX-B3-SpanId等B3标头自动传播上下文。

management.metrics.export.trace.propagation.type=B3

字符串
1.创建行李字段注入Bean
实现一个SingleBaggageField类型的Spring bean。此bean为您的自定义行李字段配置名称和可选的传播格式。下面是一个示例:

@Configuration
 public class CustomBaggageConfig {

    @Bean
    public SingleBaggageField customBaggageField() {
        return SingleBaggageField.create("my-custom-field")             
         .withPropagationFormat(BaggagePropagationFormat.W3C_TRACE_CONTEXT);
    }
 }


1.进入和操作行李
使用Tracerbean注入到类或方法中,与行李进行交互。
要设置值:

@Autowired
 private Tracer tracer;

 // ...

 tracer.baggage().put("my-custom-field", "some-value");


为了得到值

String customValue = tracer.baggage().get("my-custom-field");


1.托运行李(可选)
如果您选择不对自定义baggage字段使用B3传播,则需要手动将其注入到传出请求或消息中。这可能涉及添加自定义标头或特定于消息传递系统的其他上下文传播机制。

附加提示:

  • 考虑在您的方法上使用@Observed注解来自动启动一个span并注入Tracer,以便更轻松地访问行李。
  • 您可以使用SingleBaggageField生成器中的withPropagationFormat方法自定义各个行李字段的传播格式。
  • 有关行李传送的更高级配置和详细信息,请参阅Micrometer-Brave文档

以下文章可能对您有所帮助:https://amithkumarg.medium.com/distributed-tracing-for-spring-boot-3x-app-using-micrometer-brave-and-zipkin-a43fc107bff4

相关问题