2010-09-29 22 views
1

我正在开发的网站将每天发送数以万计的电子邮件(而且这个数量还会增加) - 注册,通知,提醒等等。我将有一个这个专用的服务器盒子实际上是通过asp.net应用程序的请求生成和发送电子邮件(asp.net应用程序在电子邮件框中调用WCF方法并为电子邮件提供各种参数)。 现在,我想弄清楚在电子邮件服务器上排队这些电子邮件作业的最佳方式是什么。来自asp.net应用程序的调用必须是异步的,以便asp.net应用程序不会等待电子邮件服务器创建和发送实际的电子邮件。 最初我只是为每个电子邮件作业请求创建一个工作线程,但是电子邮件的数量将会非常高,而且我不确定创建数百个并发线程是否是明智的性能表现。我的下一个想法是使用MSMQ,但我不确定其性能和可扩展性。从asp.net网站处理大量电子邮件

任何想法/生产实例?

谢谢!

回答

0

在之前的工作中,我们不得不排队传递消息,就像您正在解释的那样。我们决定创建一个代表每条消息的数据库记录。在创建消息时,我们使用.NET创建邮件消息,然后将其保存到数据库中。一个单独的进程(.NET中的Windows服务)将定期检查是否有消息要发送(交付日期过去,状态未发送)。然后,它会根据从存储过程收到的信息重新创建邮件消息,并沿着它的快乐方式发送消息。

返回准备发送消息的过程也根据通话的日期和时间(我们允许我们在晚上使用更多的带宽以及周末比白天使用)执行限制逻辑。

我们还需要跟踪反弹,邮件打开和点击率,这意味着需要一个代表电子邮件的数据库记录,因此我们可以将事件(反弹,打开,单击)与单个电子邮件和收件人相关联。

相关问题