Рекомендации по использованию 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/ Это очень недорого, по сравнению с другими подобными услугами или для создания других систем.
Ответ 4
Вы можете использовать службу AWS Beanstalk для использования задач в очереди.
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html
Ответ 5
Служба Windows - лучший способ, но вы не должны ее принимать. Для запуска фонового задания в среде ASP.NET существует HostingEnvironment.QueueBackgroundWorkItem
. Хорошей отправной точкой для продолжения опроса (при длительном опросе) является sqs-consumer.