Rollbar .NET API:如何等待所有待处理的异步消息完成?

时间:2021-06-02 21:10:54

标签: c# .net rollbar

我有一个 .NET 控制台应用程序,它使用 official Rollbar .NET API 将日志消息异步发布到 Rollbar。用于发送每条消息的 C# 代码如下所示:

RollbarLocator.RollbarInstance.Log(ErrorLevel.Error, "test message");

我注意到,如果我的应用程序在发送异步消息后不久终止,该消息通常不会到达 Rollbar —— 显然是因为该消息在终止时仍处于待处理状态。

>

如果我的应用程序在退出前休眠几秒钟,所有待处理消息通常成功发送:

// Give outgoing async Rollbar messages time to send before we exit.
System.Threading.Thread.Sleep(6000);

然而,显然,这种方法并不是非常优雅。

文档做了briefly touch on this situation

<块引用>

但是,在某些特定情况下(例如在退出应用程序之前进行日志记录时),您可能希望完全同步地使用记录器,以便应用程序在日志记录完成之前不会退出(包括随后将相应的有效负载传送到滚动条 API)。

然而,在我的场景中,我不一定知道在我记录给定消息时程序是否即将退出。

可以记录一个调试级别的“现在退出!”在程序终止前同步发送消息;但是,文档中并不清楚这样做是否会导致任何挂起的异步消息也被发送?

有没有一种优雅的方法来保证在我的程序终止之前所有发送到 Rollbar 的待处理异步消息实际上已经发送(或已经超时)?

0 个答案:

没有答案
相关问题