Skip to content

ОтелКомпозитныйПропагатор

Композитный пропагатор (CompositePropagator) по спецификации OpenTelemetry.

Описание

Объединяет несколько пропагаторов в единую цепочку. Позволяет одновременно использовать, например, ОтелW3CПропагатор и ОтелW3CBaggageПропагатор.

  • Внедрить() — вызывает все пропагаторы последовательно
  • Извлечь() — цепочечно передаёт контекст через все пропагаторы
  • Поля() — возвращает объединённый список заголовков всех пропагаторов

Ошибки отдельного пропагатора не прерывают выполнение цепочки: они записываются в лог как предупреждения и обработка продолжается со следующим пропагатором.

Конструктор

bsl
Новый ОтелКомпозитныйПропагатор(Пропагаторы)
ПараметрТипПо умолчаниюОписание
ПропагаторыМассивМассив объектов-пропагаторов

Методы

Внедрить

Внедряет контекст через все пропагаторы последовательно.

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

Извлечь

Извлекает контекст из заголовков через все пропагаторы последовательно. Каждый пропагатор получает контекст, обогащённый предыдущим.

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

Возвращает: Соответствие — контекст, обогащённый данными от всех пропагаторов

Поля

Возвращает объединённый список заголовков всех пропагаторов.

Возвращает: Массив из Строка — список имён полей заголовков

Пример

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

// Объединить W3C TraceContext и Baggage пропагаторы
Список = Новый Массив();
Список.Добавить(Новый ОтелW3CПропагатор());
Список.Добавить(Новый ОтелW3CBaggageПропагатор());

КомпПропагатор = Новый ОтелКомпозитныйПропагатор(Список);

// Внедрить все данные в заголовки
Заголовки = Новый Соответствие();
КомпПропагатор.Внедрить(ОтелКонтекст.Текущий(), Заголовки);
// Заголовки содержит traceparent, tracestate и baggage

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

// Получить все используемые поля
Поля = КомпПропагатор.Поля();
// ["traceparent", "tracestate", "baggage"]