我已经构建了一个应用程序,通过Amazon SES为网站发送电子邮件邮件。它用C#编码。多线程加速电子邮件发送应用程序
每封电子邮件需要0.3秒才能通过Amazon SES API发送。这意味着,使用单线程应用程序,我只能每秒发送3封电子邮件。
我实现了一个生产者/消费者,多线程应用程序与1个生产者查询定制电子邮件为每一个客户,和25消费者从队列中提取并发送电子邮件。
我的多线程应用程序每秒发送12个电子邮件(四倍速度增加)。我预计25线程应用会提高速度。
我的问题是: 多少钱我可以真的加快发送邮件在单处理器机器?我的收益看起来是否合理,还是我的速度问题更可能是由于编码而非计算机无法快速处理电子邮件?
在此先感谢!
UPDATE:如果其他人遇到同样的问题....连接到AWS以发送电子邮件需要很长时间。 AWS Developer论坛上的以下主题提供了一些见解(您可能需要向下滚动才能看到更有用的帖子)。
https://forums.aws.amazon.com/thread.jspa?threadID=78737
从我对多线程的理解来看,它可以处理多个任务,但仍然需要相同的时间。所以我不认为使用多线程会节省大量时间。但是,如果在电子邮件发送时UI仍然需要可访问,则可以使用多线程。 – craig1231 2012-01-01 23:13:57
您的系统中有多少个核心? – Tudor 2012-01-01 23:14:23
在典型的邮件过程中,队列计数会发生什么情况?查看生产者线程是否超出电子邮件发件人或不是。也许每隔一秒将P-C队列计数转储到计时器的屏幕上。 – 2012-01-02 02:36:48