Azure App Insights中的Flush()

sup*_*nja 3 azure telemetry azure-application-insights

对于Flush()Azure App Insights中的方法,我想知道它是否会影响项目的性能?

我试图删除Flush(),所有自定义数据仍发送到App Insights。所以我的问题应该是为什么我们需要Flush()?我们可以删除它吗?

juu*_*nas 6

Flush()on TelemetryClient将其当前在缓冲区中的所有数据推送到App Insights服务。您可以在这里查看其源代码:https : //github.com/Microsoft/ApplicationInsights-dotnet/blob/3115fe1cc866a15d09e9b5f1f7f596385406433d/src/Microsoft.ApplicationInsights/TelemetryClient.cs#L593

通常,Application Insights将在后台批量发送数据,以便更有效地利用网络。如果启用了开发人员模式或手动调用Flush(),则立即发送数据。

通常,您不需要调用Flush()。但是,如果您知道该过程将在此之后退出,则需要调用Flush()来确保所有数据都已发送。

  • 如果应用程序正在退出,则建议在Flush()之后使用Sleep(5000)以确保发送所有项目。 (2认同)
  • 嗯,看起来根本不干净。我们应该能够明确等待,也许退出代码是关键的遥测。 (2认同)
  • 我找到了一些有用的示例代码:https://thinkrethink.net/2017/03/09/application-shutdown-in-asp-net-core/ (2认同)