2010-04-20 104 views
13

我正在设计一个为我们的电子商务网站发送电子邮件的服务(订单确认,提醒等......) 该计划是一个“SendEmail”方法,生成一段代表要发送的电子邮件的XML,并将其粘贴到Amazon SQS队列中。 我的网络应用程序和其他应用程序将使用它来“发送”电子邮件。使用亚马逊SQS的最佳做法 - 轮询队列

然后,我需要一种检查队列,并物理发送电子邮件的方式。 (我知道我将如何发送电子邮件)

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

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

+0

您可能已经知道这一点,但我想指出的一件事是,SQS可能会多次交付相同的物品。看到这个常见问题项目:http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receive_each_message – BigJoe714 2010-04-21 00:59:02

回答

3

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

如果我可以使用不同的服务,我会认真考虑使用类似Postmark(我今天刚刚发现的感谢Jeff Atwood’s blog post的评论)。你只需将你的电子邮件信息提交给他们的api,他们就可以完成剩下的工作。他们甚至可以检查退回的电子邮件。我从来没有使用这项服务,但我认为这听起来不错,并会认真考虑在将来使用它。

25

听起来更像Amazon SNS是你的哈克贝利。 (不太清楚这意味着什么,但我曾在一部电影中看到它)。

SQS更像是“希望有人在过期前的某个时刻寻找此消息!” SNS看起来更像是一个“我需要确保这能够立即得到任何需要的人!”

它甚至包括电子邮件作为预建运输。 (甚至不知道这是正确的字)

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

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

可以开始使用亚马逊SNS是免费的。每个月,亚马逊SNS客户对前10万亚马逊SNS请求不收取任何费用,对HTTP前100000通知不收费,对前1000个电子邮件通知不收费。

+3

哈哈哈克贝利,我认为这说的是暗示它是你的朋友。哈克贝利是汤姆索耶的朋友。 – 2010-12-03 21:53:37

+6

http://en.wikipedia.org/wiki/Huckleberry#Use_in_slang – 2011-10-07 13:33:33

+0

“我是你的huckleberry ...”:Val Kilmer作为Doc墓碑中的墓碑 – 2015-09-03 04:59:24

-1

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