Li a documentação do Spring Boot sobre observabilidade e vi a seção sobreBaggage
Você pode criar bagagem com a API Tracer:
@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 } } }
Este exemplo cria uma bagagem chamada baggage1 com o valor value1. A bagagem é propagada automaticamente pela rede se você estiver usando a propagação W3C. Se você estiver usando a propagação B3, a bagagem não é propagada automaticamente. Para propagar manualmente a bagagem pela rede, use a propriedade de configuração management.tracing.baggage.remote-fields (isso também funciona para W3C). Para o exemplo acima, definir essa propriedade como baggage1 resulta em um cabeçalho HTTP baggage1: value1.
Se você quiser propagar a bagagem para o MDC, use a propriedade de configuração management.tracing.baggage.correlation.fields. Para o exemplo acima, definir essa propriedade como baggage1 resulta em uma entrada MDC chamada baggage1.
Não me deparei com bagagem no contexto de rastreamento e não consigo encontrar nenhuma definição clara.
Você poderia explicar o que é bagagem e como ela se relaciona com o rastreamento?
Baggage são pares de chave-valor que são propagados para outros serviços.
Então, sem o baggage, apenas pares de chave-valor padrão (por exemplo,
traceId
) são propagados.E o baggage permite que você defina quais pares de chave-valor personalizados você quer propagar.
No exemplo do documento, o par chave-valor "baggage1": "value1" também é propagado para outros serviços.
Um exemplo bastante comum de uso de bagagem é passar
userId