Я отправляю событие метрики приложения из клиентского приложения (.net), и мне интересно, могу ли я установить тайм-аут для TelemetryClient.Flush(), поскольку это синхронный вызов. (Приложение завершится, когда операция будет завершена, поэтому мне нужно принудительно выполнить вызов сброса, чтобы убедиться, что метрика отправлена).
Как установить тайм-аут TelemetryClient для анализа приложений?
Ответы (2)
Реализация метода сброса зависит от канала, который вы используете.
Если вы используете WebTelemetryChannel, который используется по умолчанию для веб-SDK (https://www.nuget.org/packages/Microsoft.ApplicationInsights.Web.TelemetryChannel/), чем Flush является асинхронным.
Если вы используете PersistenceChannel, который используется по умолчанию для SDK устройств (https://www.nuget.org/packages/Microsoft.ApplicationInsights.PersistenceChannel/), чем синхронизируется Flush. Как упомянул Изик, переопределения недоступны.
Flush является блокирующей операцией и не поддерживает никакого тайм-аута по умолчанию, но вы всегда можете запустить новую задачу, запустить в ней Flush и ждите (с тайм-аутом) завершения этой задачи.
В качестве примечания, Flush не отправляет никаких телеметрических данных, а просто сохраняется на диске, поэтому он относительно быстр.