簡體   English   中英

運行后台任務以在用戶發布到ASP.NET CORE中的討論區時發送電子郵件

[英]Running a background task for sending emails when a user posts to a discussion board in ASP.NET CORE

我需要通過SMTP向討論板的所有訂戶發送電子郵件。 如果有很多訂戶(例如1000多個),我不希望發布新帖子的用戶在發送通知電子郵件時必須等待。

起初我以為我可以使用: System.Net.Mail.SmtpClient.SendMailAsync

但是,正如這篇文章所解釋的那樣“異步並不是使操作更快返回響應的魔杖。您的任務(在這種情況下,發送電子郵件)需要花費的時間,無論是否同步,操作都不會返回直到任務完成為止。” 異步更多地是關於提高線程的效率,而不是使任務更快地運行。

首先,我對SendMailAsync的研究正確嗎? 我認為這不是正確的解決方案。

第二,實現目標的方法是什么? 后台任務 我聽說過Hangfire 我需要使用像Hangfire這樣的東西嗎? 還是可以僅使用AJAX呼叫發送電子郵件?

順便說一句,我正在使用ASP.NET Core和.NET Framework 4.6.1

使用在單獨服務器上運行的消息隊列服務(例如RabbitMQ或AWS SQS)怎么樣? 然后向該服務器發布一條消息,其中包含需要完成的操作的詳細信息(在本例中為發送給誰),然后消息服務可以在閑暇時將消息從隊列中拉出,進行處理(發送1000封電子郵件)然后從隊列中取出下一件事。

我在類似情況下使用了Hangfire。 這是我的實現方式。

  1. 將要發送的電子郵件列表存儲在數據庫中。
  2. 使用hangfire在后台處理電子郵件。

您可以使用單獨的隊列/服務器進行處理。 為我做了工作。

使用Hangfire在ASP.net中的后台處理中查看此帖子

此外,在實施之前,請仔細閱讀hangfire最佳做法

暫無
暫無

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

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