带有弹簧靴的传播键 3

问题描述 投票:0回答:1

在升级到 Spring Boot 3 之前,我可以使用以下属性将密钥传播到其他微服务:

spring.sleuth.propagation-keys=my_key

现在升级到 spring boot 3 后,spring-boot-starter-sleuth 不再可用了。

谁能告诉我如何使用 Spring Boot 3 在微服务之间传播密钥?

提前谢谢您!

spring-boot spring-cloud
1个回答
0
投票

Spring Boot 3 中没有与

spring.sleuth.propagation-keys
直接等效的东西。但是,有一个替代方案

假设您使用带有依赖项的 Spring boot 版本

3.2.1
,使用 Micrometer 将自定义行李添加到 Spring Boot 3 中的 Brave 涉及几个步骤:

  1. 定义自定义行李字段

    为您的自定义行李字段选择相关名称。该名称稍后将用于识别和访问行李价值。

  2. 配置传播(可选)

    默认情况下,Micrometer-Brave 自动使用 B3 标头(如

    io.micrometer:micrometer-tracing-bridge-brave

    X-B3-TraceId
    )传播上下文。如果您希望自定义行李以类似方式传播,请考虑设置以下属性
    X-B3-SpanId

  3. 创建用于行李场注入的 Bean

    实现类型为

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

    的 Spring bean。该 bean 为您的自定义行李字段配置名称和可选的传播格式。这是一个例子:

    SingleBaggageField

  4. 存取和操作行李

    使用注入到您的类或方法中的 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");

  5. 托运行李(可选)

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

其他提示:

考虑在方法上使用 @Observed 注释来自动启动跨度并注入 Tracer 以更轻松地访问行李。
  • 您可以使用 SingleBaggageField 构建器中的 withPropagationFormat 方法自定义各个行李字段的传播格式。
  • 有关行李传播的更多高级配置和详细信息,请参阅 Micrometer-Brave 文档
  • 以下文章可能也会有帮助:
https://amithkumarg.medium.com/distributed-tracing-for-spring-boot-3x-app-using-micrometer-brave-and-zipkin-a43fc107bff4

© www.soinside.com 2019 - 2024. All rights reserved.