13

我正在设计一个为我们的电子商务网站发送电子邮件的服务(订单确认、警报等......)计划是有一个“SendEmail”方法,它生成一个代表要发送的电子邮件的 XML 块,并坚持它在 Amazon SQS 队列上。我的网络应用程序和其他应用程序将使用它来“发送”电子邮件。

然后,我需要一种检查队列并实际发送电子邮件消息的方法。(我知道我将如何发送电子邮件)

我很好奇“轮询”队列的最佳方式是什么?

我应该创建一个 Windows 服务,并使用 Quartz.net 之类的东西来安排它每隔 x 分钟检查一次队列吗?有没有更好的方法来做到这一点?

4

5 回答 5

25

听起来Amazon SNS更像是你的越橘。(不太确定这意味着什么,但我曾经在一部电影中看到过)。

SQS 更像是一个“希望有人在它过期之前的某个时候来寻找这个消息!” SNS 看起来更像是“我需要确保它立即到达需要它的人!”

它甚至包括电子邮件作为预先构建的传输。(甚至不确定这是否是正确的词)

Amazon SNS 提供了一个简单的 Web 服务接口,可用于创建您想要通知应用程序(或人员)的主题、为客户端订阅这些主题、发布消息以及通过客户端选择的协议(即 HTTP、电子邮件等)。Amazon SNS 使用“推送”机制向客户发送通知,无需定期检查或“轮询”新信息和更新。

可以肯定的是,它们具有与其他服务相同的免费增值模式,但对电子邮件有限制:

您可以免费开始使用 Amazon SNS。每个月,Amazon SNS 客户对前 100,000 个 Amazon SNS 请求免费,前 100,000 个 HTTP 通知免费,前 1,000 个电子邮件通知免费。

于 2010-07-11T01:40:54.813 回答
4

如果我是你,并且如果我真的想让 SQS 在这种情况下工作,我会创建一个 Windows 服务,它每 10 分钟从队列中检索任何消息,然后分派它们。

如果我有可能使用不同的服务,我会认真考虑使用Postmark之类的东西(感谢Jeff Atwood 的博客文章的评论,我今天才知道这一点)。您只需将您的电子邮件信息提交给他们的 api,其余的交给他们。他们甚至有一个用于检查退回电子邮件的 API。我从未使用过这项服务,但我认为它听起来很棒,并且将来会认真考虑使用它。

于 2010-04-21T20:44:43.643 回答
1

看起来 SES 是您所需要的。http://aws.amazon.com/ses/与其他类似服务或构建其他系统相比,它也非常便宜。

于 2012-12-03T22:50:25.847 回答
0

Windows 服务是最好的方法,但你千万不要采取它。要在 ASP.NET 环境中运行后台作业,有HostingEnvironment.QueueBackgroundWorkItem. 实施持续轮询(通过长轮询)的一个很好的起点是sqs-consumer

于 2017-06-28T08:42:03.363 回答
0

您可以使用 AWS Beanstalk 服务来使用队列中的任务。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html

于 2016-07-18T04:29:47.027 回答