簡體   English   中英

通過.NET Core Logger向服務總線隊列發送消息?

[英]Sending a message to a service bus queue via .NET Core Logger?

我創建了一個自定義記錄器,該記錄器將消息發送到服務總線隊列。 我的問題是Microsoft.Extensions.Logging.ILogger沒有異步Log方法,因此必須同步調用異步方法,這可能會導致問題。

    _queueClient.SendAsync(message).Wait();

所以我的問題是,在不引起線程飢餓的情況下,最安全的方法是什么?

Net Core日志記錄專門設計為不使用異步方法。 他們認為日志記錄應該足夠快,不需要它。

“日志記錄應該如此之快,以至於不值得付出異步代碼的性能成本。”

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

建議是,如果您需要記錄這樣的內容,請改用“批處理記錄器”。

“相反,將日志消息同步添加到內存隊列中,並讓后台工作人員將消息從隊列中拉出,以完成將數據推送到SQL Server的異步工作。”

因此,基本上,您應該將隊列調用移到后台工作程序(HostedService)中,並讓它在后台工作程序中進行異步調用。 常規的“記錄器”方法應調用將消息放入MemoryCache隊列的內容或類似內容,然后后台工作人員將在后台從那里獲取內容。 我敢肯定(Azure Logger)有一個簡單的例子說明了這種事情

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM