Amazon SQS的最佳实践 - 轮询队列

13
我正在为我们的电子商务网站设计一项发送电子邮件的服务(订单确认、提醒等)。计划是创建一个“SendEmail”方法,生成代表要发送的电子邮件的XML片段,并将其放入Amazon SQS队列中。我的Web应用程序和其他应用程序将使用此方法进行电子邮件的“发送”。
接下来,我需要一种检查队列并实际发送电子邮件消息的方法。(我知道如何分派电子邮件)
我很好奇最佳的“轮询”队列的方式是什么?
我应该创建一个Windows服务,并使用类似于Quartz.net的东西来调度它以每隔x分钟检查队列吗?是否有更好的方法来实现这一点?

您可能已经知道这一点,但我想指出的一件事是,SQS 可能会传递相同的项目多次。请参阅此常见问题解答项目:http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receive_each_message - BigJoe714
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个电子邮件通知的费用。


3
嗨,Huckleberry。我认为那句话意味着这是你的朋友。因为Huckleberry是Tom Sawyer的朋友。 - Faisal Abid
1
“我就是你需要的人……”:瓦尔·基尔默在《亡命之徒》中扮演的Doc Holiday - jp_inc

4
如果我是你,而且真的想让SQS在这种情况下工作,我会创建一个Windows服务,每10分钟从队列中检索任何消息,然后分派它们。
如果我可以使用不同的服务,我会认真考虑使用类似Postmark的东西(今天在Jeff Atwood的博客文章的评论中发现)。您只需向其API提交电子邮件消息信息,他们将完成其余工作。他们甚至有一个用于检查退信电子邮件的API。我从未使用过此服务,但我认为它听起来很棒,并且将来会认真考虑使用它。

1

0

0

Windows服务是最好的方式,但你不应该采用它。在ASP.NET环境中运行后台作业,可以使用HostingEnvironment.QueueBackgroundWorkItem。实现持续轮询(通过长轮询)的良好起点是sqs-consumer


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接