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{}))