是否通过 .NET Core Logger 将消息发送到服务总线队列?



我创建了一个自定义记录器,它将消息发送到服务总线队列。我的问题是Microsoft.Extensions.Logging.ILogger没有异步日志方法,所以我必须同步调用异步方法,这可能会导致问题。

    _queueClient.SendAsync(message).Wait();

所以我的问题是,在不导致线程不足的情况下完成此操作的最安全方法是什么?

Net Core 日志记录专门设计为不使用异步方法。他们认为日志记录应该足够快,以至于不需要它。

"日志记录应该如此之快,以至于不值得以 异步代码。

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-2.2

建议是,如果您需要记录这样的东西,请使用"批处理记录器"。

"相反,同步将日志消息添加到内存队列中,并具有 后台辅助角色将消息从队列中拉出以执行 将数据推送到 SQL Server 的异步工作。

因此,基本上,您应该将队列调用移动到后台工作线程(HostedService(中,并让它在后台工作线程中执行异步调用。您正常的"记录器"方法应该调用将消息粘贴到 MemoryCache 队列或类似内容的内容,然后您的后台工作线程将在后台从那里获取。我敢肯定(在我的头顶上(Azure 记录器有一个简单的例子来说明这种事情

相关内容

最新更新