ОтелКомпозитныйПропагатор
Композитный пропагатор (CompositePropagator) по спецификации OpenTelemetry.
Описание
Объединяет несколько пропагаторов в единую цепочку. Позволяет одновременно использовать, например, ОтелW3CПропагатор и ОтелW3CBaggageПропагатор.
Внедрить()— вызывает все пропагаторы последовательноИзвлечь()— цепочечно передаёт контекст через все пропагаторыПоля()— возвращает объединённый список заголовков всех пропагаторов
Ошибки отдельного пропагатора не прерывают выполнение цепочки: они записываются в лог как предупреждения и обработка продолжается со следующим пропагатором.
Конструктор
Новый ОтелКомпозитныйПропагатор(Пропагаторы)| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Пропагаторы | Массив | — | Массив объектов-пропагаторов |
Методы
Внедрить
Внедряет контекст через все пропагаторы последовательно.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Контекст | Произвольный | — | Контекст для внедрения (Спан, Baggage и т.д.) |
Носитель | Произвольный | — | Носитель заголовков |
Сеттер | ОтелСеттерТекстовойКарты | Неопределено | Объект для записи в носитель (по умолчанию для Соответствие) |
Извлечь
Извлекает контекст из заголовков через все пропагаторы последовательно. Каждый пропагатор получает контекст, обогащённый предыдущим.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Контекст | Соответствие | — | Входной OTel Context |
Носитель | Произвольный | — | Носитель заголовков |
Геттер | ОтелГеттерТекстовойКарты | Неопределено | Объект для чтения из носителя (по умолчанию для Соответствие) |
Возвращает: Соответствие — контекст, обогащённый данными от всех пропагаторов
Поля
Возвращает объединённый список заголовков всех пропагаторов.
Возвращает: Массив из Строка — список имён полей заголовков
Пример
#Использовать opentelemetry
// Объединить W3C TraceContext и Baggage пропагаторы
Список = Новый Массив();
Список.Добавить(Новый ОтелW3CПропагатор());
Список.Добавить(Новый ОтелW3CBaggageПропагатор());
КомпПропагатор = Новый ОтелКомпозитныйПропагатор(Список);
// Внедрить все данные в заголовки
Заголовки = Новый Соответствие();
КомпПропагатор.Внедрить(ОтелКонтекст.Текущий(), Заголовки);
// Заголовки содержит traceparent, tracestate и baggage
// Извлечь все данные из входящих заголовков
НовыйКонтекст = КомпПропагатор.Извлечь(Новый Соответствие(), ВходящиеЗаголовки);
// Получить все используемые поля
Поля = КомпПропагатор.Поля();
// ["traceparent", "tracestate", "baggage"]