ОтелПакетныйПроцессорСпанов
Пакетный (асинхронный) процессор спанов.
Описание
Накапливает завершённые спаны в буфере и экспортирует их пакетами в фоновом потоке. Рекомендуется для производственного использования. Является тонкой обёрткой над ОтелБазовыйПакетныйПроцессор.
Аналог Java SDK: BatchSpanProcessor.
Создание
Конструктор без параметров. Процессор собирается через ПостроительНаследника из ОтелБазовыйПакетныйПроцессор, которому передаются настройки:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Экспортер | Произвольный | — | Экспортер спанов |
ИмяСигнала | Строка | — | Имя сигнала для лога: "traces" |
МаксРазмерБуфера | Число | 2048 | Максимальный размер очереди |
МаксРазмерПакета | Число | 512 | Максимальный размер пакета; размер больше размера очереди ограничивается размером очереди |
ИнтервалЭкспортаМс | Число | 5000 | Интервал фонового экспорта в миллисекундах |
ТаймаутЭкспортаМс | Число | 30000 | Таймаут экспорта в миллисекундах |
Спаны экспортирует фоновое задание: оно запускается с первым спаном и отправляет пакет, как только накопился полный пакет или истёк интервал экспорта. ПриЗавершении не ждёт отправку даже при заполнении пакета. ЗапуститьФоновыйЭкспорт() запускает задание заранее; вызывать его не обязательно.
Спан, пришедший в полную очередь, отбрасывается. При извлечении следующего пакета в лог oscript.lib.opentelemetry.traces пишется предупреждение с числом спанов, отброшенных с прошлого пакета.
Методы
ПриНачале
Вызывается при начале спана. В пакетном процессоре не выполняет действий.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Спан | ОтелСпан | — | Начавшийся спан |
РодительскийКонтекст | Произвольный | — | Родительский контекст |
ПриЗавершении
Вызывается при завершении спана. Помещает сэмплированный спан в буфер и возвращается, не дожидаясь экспорта.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Спан | ОтелСпан | — | Завершённый спан |
СброситьБуфер
Принудительно экспортирует все спаны из буфера.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 0 | Таймаут в миллисекундах |
Возвращает: ОтелРезультатЭкспорта
Закрыть
Завершает работу процессора: останавливает фоновый экспорт, экспортирует оставшиеся в буфере спаны и закрывает экспортер. Все три шага укладываются в один общий срок; экспортер закрывается и после сбоя или таймаута финального экспорта. Повторный вызов возвращает ошибку «Процессор закрыт».
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут в миллисекундах (0 — без ограничения) |
Возвращает: ОтелРезультатЗакрытия — ошибка финального экспорта или закрытия экспортера; иначе таймаут, если истёк срок; иначе успех
Пример
Экспортер = Новый ОтелЭкспортерСпанов(Новый ОтелGrpcТранспорт("http://localhost:4317"));
Базовый = Новый ОтелБазовыйПакетныйПроцессор(Экспортер, "traces");
Процессор = Новый ПостроительНаследника(Новый ОтелПакетныйПроцессорСпанов(), Базовый).Построить();
Процессор.ЗапуститьФоновыйЭкспорт();
Провайдер = Новый ОтелПостроительПровайдераТрассировки()
.ДобавитьПроцессор(Процессор)
.Построить();
// При завершении работы приложения
РезЗакрытия = Провайдер.Закрыть(30000);
Если НЕ РезЗакрытия.Успешно() Тогда
Сообщить("Ошибка закрытия: " + РезЗакрытия.Описание());
КонецЕсли;