簡體   English   中英

使用Amazon SQS的最佳實踐-輪詢隊列

[英]Best practices for using Amazon SQS - Polling the queue

我正在設計用於為我們的電子商務網站發送電子郵件的服務(訂單確認,警報等)。該計划是要有一個“ SendEmail”方法,該方法會生成表示要發送的電子郵件的XML塊並粘貼它放在Amazon SQS隊列上。 我的Web應用程序和其他應用程序將使用它來“發送”電子郵件。

然后,我需要一種檢查隊列並以物理方式發送電子郵件的方法。 (我知道我將如何發送電子郵件)

我很好奇“輪詢”隊列的最佳方法是什么?

我是否應該創建一個Windows服務,並使用Quartz.net之類的東西來安排它,例如每隔x分鍾數檢查一次隊列? 有更好的方法嗎?

聽起來更像是Amazon SNS是您的禍根。 (不太確定這是什么意思,但是我在電影中看過一次)。

SQS更像是“希望有人在此消息過期之前尋找它!” SNS似乎更像是“我需要確保將其發送給需要它的人!”

它甚至包括電子郵件作為預先構建的傳輸方式。 (甚至不確定這是不是正確的詞)

Amazon SNS提供了一個簡單的Web服務界面,可用於創建您想要通知應用程序(或人們)的主題,向客戶端訂閱這些主題,發布消息以及通過客戶端選擇的協議(即HTTP,電子郵件等)。 Amazon SNS使用“推”機制向客戶端發送通知,從而無需定期檢查或“輪詢”新信息和更新。

可以肯定的是,它們具有與其余服務相同的免費增值模式,但電子郵件受到限制:

您可以免費開始使用Amazon SNS。 每個月,Amazon SNS客戶不為前100,000個Amazon SNS請求支付任何費用,針對通過HTTP發出的前100,000個通知不收取任何費用,也不為通過電子郵件發送的前1,000個通知不收取任何費用。

如果我是您,並且如果我真的想在這種情況下使用SQS,我將創建一個Windows服務,該服務每隔10分鍾從隊列中檢索所有消息,然后進行調度。

如果我可以使用其他服務,那么我將認真考慮使用Postmark之類的東西(由於Jeff Atwood的博客文章對此發表了評論,所以我今天才發現這一點)。 您只需將您的電子郵件信息提交給他們的api,其余的就由他們完成。 他們甚至還有一個用於檢查退回電子郵件的API。 我從未使用過此服務,但我認為它聽起來不錯,將來會認真考慮使用它。

看起來SES是您所需要的。 http://aws.amazon.com/ses/與其他類似服務或構建其他系統相比,它也非常便宜。

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

Windows服務是最好的方法,但是您絕對不能接受。 要在ASP.NET環境中運行后台作業,請使用HostingEnvironment.QueueBackgroundWorkItem sqs-consumer是實施持續輪詢(通過長時間輪詢)的一個很好的起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM