[英]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.