Рекомендации по использованию Amazon SQS - опрос очереди

Я разрабатываю службу для отправки электронных писем для нашего сайта электронной коммерции (подтверждения заказа, оповещения и т.д.). План состоит в том, чтобы иметь метод "SendEmail", который генерирует фрагмент XML, представляющий отправленное электронное письмо, и помещает его в очередь SQS Amazon. Мои веб-приложения и другие приложения будут использовать это для отправки писем.

Затем мне нужен способ проверки очереди и физическая отправка сообщений электронной почты. (Я знаю, как я собираюсь отправлять электронные письма)

Мне любопытно, что лучший способ "опроса" очереди будет?

Должен ли я создать службу Windows и использовать что-то вроде Quartz.net, чтобы запланировать, чтобы он проверял очередь каждые х минут? Есть ли лучший способ сделать это?

Ответы

Ответ 1

Если бы я был вами, и если бы я ДЕЙСТВИТЕЛЬНО хотел, чтобы SQS работал для этого сценария, я бы создал службу Windows, которая каждые 10 минут извлекает любые сообщения из очереди, а затем отправляет их.

Если бы я мог использовать другую услугу, я бы серьезно подумал об использовании чего-то вроде Postmark (о котором я только что узнал сегодня спасибо за комментарий сообщение блога Джеффа Атвуда). Вы просто представите свою информацию о своих сообщениях в свои api, и они сделают все остальное. У них даже есть api для проверки возвращенных писем. Я никогда не пользовался этой услугой, но я думаю, что это звучит здорово и серьезно рассмотрит ее использование в будущем.

Ответ 2

Звучит скорее как Amazon SNS - это ваша шотландия. (не совсем уверен, что это значит, но я видел это в кино один раз).

SQS скорее всего "надеется, что кто-то найдет это сообщение в какой-то момент до истечения срока его действия". где SNS выглядит скорее как "Мне нужно убедиться, что это дойдет до того, кто нуждается в этом сразу!"

Он даже включает в себя электронную почту как готовый транспорт. (даже не уверен, что это правильное слово)

Amazon SNS предоставляет простой интерфейс веб-сервисов, который может использоваться для создания тем, которые вы хотите уведомлять о приложениях (или людях), подписываться на эти темы, публиковать сообщения и отправлять эти сообщения по выбранному протоколу клиентов (т.е. HTTP, электронная почта и т.д.). Amazon SNS предоставляет уведомления клиентам с использованием механизма "push", который устраняет необходимость периодической проверки или "опроса" новой информации и обновлений.

Конечно, у них такая же модель freemium, что и остальные сервисы с ограничениями по электронной почте:

Вы можете начать работу с Amazon SNS бесплатно. Каждый месяц клиенты Amazon SNS не платят за первые 100 000 запросов Amazon SNS, никаких сборов за первые 100 000 уведомлений по HTTP и никаких сборов за первые 1000 уведомлений по электронной почте.

Ответ 3

Похоже, SES - это то, что вам нужно. http://aws.amazon.com/ses/ Это очень недорого, по сравнению с другими подобными услугами или для создания других систем.

Ответ 5

Служба Windows - лучший способ, но вы не должны ее принимать. Для запуска фонового задания в среде ASP.NET существует HostingEnvironment.QueueBackgroundWorkItem. Хорошей отправной точкой для продолжения опроса (при длительном опросе) является sqs-consumer.