[英]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。 這是我的實現方式。
您可以使用單獨的隊列/服務器進行處理。 為我做了工作。
使用Hangfire在ASP.net中的后台處理中查看此帖子
此外,在實施之前,請仔細閱讀hangfire最佳做法 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.