OTEL Baggage. Golang

b, _ := baggage.NewMember("key", "value")
bag, _ := baggage.New(b)
ctx = baggage.ContextWithBaggage(ctx, bag)

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ контСкст Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ создан Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ стартС Π½ΠΎΠ²ΠΎΠ³ΠΎ span’а. И Ссли ΠΏΠΎΡ‚ΠΎΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Inject Ρ‚ΠΎ ΠΎΠ½ пСрСдастся ΠΊΠ°ΠΊ http Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ:

otel.GetTextMapPropagator().Inject(ctx, propagation.HeaderCarrier(w.Header()))

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ΅ΠΉ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ:

ctx := otel.GetTextMapPropagator().Extract(r.Context(), propagation.HeaderCarrier(r.Header))
 
bag := baggage.FromContext(ctx)
_, span := tracer.Start(ctx, "second")
defer span.End() 
fmt.Println(bag.Member("key").Value())

TextMapPropogator

Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ объявлСнии TextMapPropogator ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ β€œΠΏΡ€ΠΎΠΏΠΎΠ³Π°Ρ‚ΠΎΡ€β€ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ стандартной TraceContext Ρ‚Π°ΠΊ ΠΆΠ΅ Baggage: otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))