2010-04-20 16 views
13

Je conçois un service d'envoi de courriels pour notre site de commerce électronique (confirmations de commande, alertes, etc.) Le plan est d'avoir une méthode "SendEmail", génère un fragment de XML représentant l'e-mail à envoyer et le place dans une file d'attente Amazon SQS. Mes applications Web et d'autres applications l'utiliseront pour "envoyer" des e-mails. J'ai alors besoin d'un moyen de vérifier la file d'attente et d'envoyer physiquement les messages électroniques. (Je sais comment je vais envoyer des emails)Meilleures pratiques pour utiliser Amazon SQS - Sondage dans la file d'attente

Je suis curieux de savoir quelle serait la meilleure façon de "scruter" la file d'attente?

Dois-je créer un service Windows et utiliser quelque chose comme Quartz.net pour le programmer afin de vérifier la file d'attente tous les x minutes, par exemple? Y a-t-il une meilleure façon de faire cela?

+0

Vous le savez peut-être déjà, mais une chose que je voulais souligner est que SQS peut livrer le même article plus d'une fois. Voir cet article FAQ: http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receive_each_message – BigJoe714

Répondre

3

Si j'étais vous, et si je voulais vraiment faire fonctionner SQS pour ce scénario, je créerais un service Windows qui récupère tous les messages de la file d'attente toutes les 10 minutes, puis les distribue.

Si je pouvais potentiellement utiliser un service différent, je envisagerais sérieusement d'utiliser quelque chose comme Postmark (que je viens de découvrir aujourd'hui grâce à un commentaire sur Jeff Atwood’s blog post). Vous souhaitez simplement envoyer vos informations de messagerie électronique à leur API, et ils feraient le reste. Ils ont même une API pour vérifier les emails rebondis. Je n'ai jamais utilisé ce service, mais je pense que cela semble génial et envisager sérieusement de l'utiliser à l'avenir.

25

Cela ressemble plus à Amazon SNS est votre myrtille. (pas vraiment sûr de ce que cela signifie, mais je l'ai vu dans un film une fois). SQS est plus d'un "espérons que quelqu'un vient chercher ce message à un moment avant qu'il expire!" où le SNS ressemble plus à un «je dois m'assurer que cela arrive à ceux qui en ont besoin tout de suite!

Il inclut même le courrier électronique en tant que transport prédéfini. (Même pas sûr si c'est le mot juste)

Amazon SNS fournit une simple interface de services Web qui peuvent être utilisés pour créer des sujets que vous souhaitez notifier les applications (ou personnes) au sujet, abonnez-vous aux clients de ces sujets, publier des messages , et ont ces messages livrés sur le protocole de choix des clients (c.-à-d. HTTP, courriel, etc.). Amazon SNS envoie des notifications aux clients à l'aide d'un mécanisme «push» qui élimine le besoin de vérifier ou d'interroger périodiquement les nouvelles informations et mises à jour.

Pour être sûr, ils ont le même modèle freemium que le reste des services avec des limitations sur le courrier électronique:

Vous pouvez commencer avec Amazon SNS gratuitement. Chaque mois, les clients Amazon SNS ne paient aucun frais pour les 100 000 premières demandes Amazon SNS, aucun frais pour les 100 000 premières notifications via HTTP et aucun frais pour les 1 000 premières notifications par e-mail.

+3

LOL Huckleberry, je pense que ce dicton implique que c'est votre ami. Depuis Huckleberry était l'ami de Tom Sawyer. –

+6

http://en.wikipedia.org/wiki/Huckleberry#Use_in_slang –

+0

"Je suis votre myrtille ...": Val Kilmer comme Doc Holiday à Tombstone –

1

On dirait que SES est ce qu'il vous faut. http://aws.amazon.com/ses/ Il est très peu coûteux par rapport à d'autres services similaires ou la construction d'autres systèmes.

0

Vous pouvez utiliser le service AWS Beanstalk pour consommer les tâches dans la file d'attente.

-1

Windows service est le meilleur moyen, mais vous ne devez pas le prendre. Pour exécuter le travail d'arrière-plan dans l'environnement ASP.NET, il existe HostingEnvironment.QueueBackgroundWorkItem. Un bon point de départ pour implémenter l'interrogation continue (via une longue interrogation) est sqs-consumer.