我需要通过SMTP向讨论区的所有订阅者发送电子邮件。如果有很多(比如1000多个)订阅者,我不希望发布新帖子的用户必须等待发送通知电子邮件。
起初我以为我可以使用:System.Net.Mail.SmtpClient.SendMailAsync
但是,作为this post explains,“Async不是一个魔术棒,它会使动作更快地返回响应。您的任务(在这种情况下,发送电子邮件)需要花费的时间和异步在任务完成之前,操作不会返回响应。“异步更多的是关于线程的高效性,而不是让任务运行得更快。
首先,我对SendMailAsync的研究是否正确?我不认为这是一个正确的解决方案。
第二,实现目标的方法是什么? 后台任务? 我听说过Hangfire。有点像Hangfire,我需要使用什么?或者我可以使用一个AJAX电话来发送电子邮件吗?
顺便说一下,我正在使用ASP.NET Core和.NET Framework 4.6.1
答案 0 :(得分:0)
如何使用在单独服务器上运行的消息队列服务(例如RabbitMQ或AWS SQS)?然后向该服务器发送一条消息,详细说明需要做什么(在这种情况下发送给谁),然后消息服务可以在闲暇时将消息从队列中拉出来,处理它们(发送1000封电子邮件)然后从队列中取出下一件事。
答案 1 :(得分:0)
我在类似情况下使用了hangfire。这是我实施它的方式。
您可以使用单独的队列/服务器进行处理。这份工作对我而言。
在 Background Processing in ASP.net using Hangfire
上查看此帖子另外,在实施之前请完成hangfire best practices。