Skip to content

ОтелW3CBaggageПропагатор

Пропагатор Baggage по спецификации W3C Baggage.

Описание

Обеспечивает внедрение и извлечение Baggage в/из HTTP-заголовков по спецификации W3C Baggage.

Используемый заголовок: baggage
Формат: key1=value1,key2=value2;metadata

Значения кодируются percent-encoding по спецификации W3C Baggage. Общий размер заголовка ограничен 8192 байтами: если значение превышает ограничение, заголовок не внедряется и записывается предупреждение в лог.

Использует ОтелГеттерТекстовойКарты и ОтелСеттерТекстовойКарты по умолчанию.

Конструктор

Конструктор без параметров.

bsl
Новый ОтелW3CBaggageПропагатор()

Методы

Внедрить

Внедряет Baggage из контекста в заголовок baggage носителя. Если Baggage отсутствует или пустое — ничего не делает.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствиеOTel Context
НосительПроизвольныйНоситель заголовков
СеттерОтелСеттерТекстовойКартыСтандартный сеттерОбъект для записи в носитель

Извлечь

Извлекает Baggage из заголовка baggage носителя в новый контекст. Если заголовок отсутствует — возвращает исходный контекст без изменений.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствиеВходной OTel Context
НосительПроизвольныйНоситель заголовков
ГеттерОтелГеттерТекстовойКартыСтандартный геттерОбъект для чтения из носителя

Возвращает: Соответствие — новый контекст с Baggage (или входной контекст, если заголовок отсутствует)

Поля

Возвращает список HTTP-заголовков, используемых пропагатором.

Возвращает: Массив из Строка["baggage"]

Пример

bsl
#Использовать opentelemetry

Пропагатор = Новый ОтелW3CBaggageПропагатор();

// Создать контекст с Baggage
Багаж = Новый ОтелПостроительBaggage()
    .Установить("user.id", "42")
    .Установить("tenant", "acme")
    .Построить();
Контекст = ОтелКонтекст.КонтекстСBaggage(ОтелКонтекст.Текущий(), Багаж);

// Внедрить в заголовки
Заголовки = Новый Соответствие();
Пропагатор.Внедрить(Контекст, Заголовки);
// baggage: user.id=42,tenant=acme

// Извлечь из входящих заголовков
ВходящиеЗаголовки = Новый Соответствие();
ВходящиеЗаголовки.Вставить("baggage", "user.id=42,tenant=acme");
НовыйКонтекст = Пропагатор.Извлечь(Новый Соответствие(), ВходящиеЗаголовки);