我阅读了有关可观察性的spring boot 文档,并查看了有关Baggage
你可以使用 Tracer API 创建行李:
@Component class CreatingBaggage { private final Tracer tracer; CreatingBaggage(Tracer tracer) { this.tracer = tracer; } void doSomething() { try (BaggageInScope scope = this.tracer.createBaggageInScope("baggage1", "value1")) { // Business logic } } }
此示例创建名为 baggage1 且值为 value1 的 baggage。如果您使用 W3C 传播,则 baggage 会自动通过网络传播。如果您使用 B3 传播,则 baggage 不会自动传播。要手动通过网络传播 baggage,请使用 management.tracing.baggage.remote-fields 配置属性(这也适用于 W3C)。对于上述示例,将此属性设置为 baggage1 会导致 HTTP 标头 baggage1: value1。
如果要将 baggage 传播到 MDC,请使用 management.tracing.baggage.correlation.fields 配置属性。对于上述示例,将此属性设置为 baggage1 会产生名为 baggage1 的 MDC 条目。
我还没有在追踪的背景下遇到过行李,也找不到任何明确的定义。
您能解释一下什么是行李以及它与追踪有何关系吗?
Baggage 是传播到其他服务的键值对。因此,如果没有 baggage,则只会传播
默认键值对(例如)。 并且 baggage 允许您定义要传播的自定义键值对。
traceId
在文档的示例中,键值对“baggage1”:“value1”也被传播到其他服务。
行李使用的一个很常见的例子是传递
userId