2010-04-20 15 views
13

Sto progettando un servizio per l'invio di e-mail per il nostro sito eCommerce (conferme d'ordine, avvisi ecc ...) Il piano è di avere un metodo "SendEmail", che genera un blocco XML che rappresenta l'e-mail da inviare e lo attacca su una coda Amazon SQS. Le mie app Web e altre applicazioni lo utilizzeranno per "inviare" e-mail.Best practice per l'utilizzo di Amazon SQS - Polling della coda

Ho quindi bisogno di un modo di controllare la coda e di inviare fisicamente i messaggi di posta elettronica. (So come sto per inviare e-mail)

Sono curioso di sapere quale sarebbe il modo migliore per "sondare" la coda?

Devo creare un servizio di Windows e utilizzare qualcosa come Quartz.net per programmarlo per controllare la coda ogni x numero di minuti, ad esempio? C'è un modo migliore per farlo?

+0

Forse lo sapete già, ma una cosa che volevo sottolineare è che SQS può consegnare lo stesso oggetto più di una volta. Vedere questo elemento della FAQ: http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receive_each_message – BigJoe714

risposta

3

Se fossi in te, e se davvero volessi far funzionare SQS per questo scenario, creerei un servizio Windows che recuperi tutti i messaggi dalla coda ogni 10 minuti e poi li invii.

Se potessi potenzialmente utilizzare un servizio diverso, prenderei seriamente in considerazione l'utilizzo di qualcosa come Postmark (che ho appena scoperto oggi grazie a un commento su Jeff Atwood’s blog post). Dovresti semplicemente inviare le informazioni del tuo messaggio e-mail alla loro API, e loro farebbero il resto. Hanno anche un api per il controllo di e-mail rimbalzate. Non ho mai usato questo servizio, ma penso che suoni bene e prenderei seriamente in considerazione l'utilizzo in futuro.

25

I suoni più simili a Amazon SNS sono il tuo huckleberry. (non sono sicuro di cosa significhi, ma l'ho visto in un film una volta).

SQS è più di un "spero che qualcuno venga a cercare questo messaggio prima che scada!" dove SNS sembra più un "Ho bisogno di assicurarmi che questo arrivi a chiunque ne abbia bisogno subito!"

Include anche l'e-mail come trasporto pre-costruito. (Non sono nemmeno sicuro se questa è la parola giusta)

Amazon SNS fornisce una semplice interfaccia di servizi web che può essere utilizzata per creare argomenti che si desidera notificare alle applicazioni (o persone) circa, iscriviti ai clienti di questi argomenti, pubblicare messaggi e questi messaggi vengono consegnati tramite il protocollo di scelta dei clienti (ad es. HTTP, email, ecc.). Amazon SNS invia notifiche ai client utilizzando un meccanismo di "push" che elimina la necessità di controllare o "sondare" periodicamente nuove informazioni e aggiornamenti.

A dire il vero, hanno lo stesso modello freemium come il resto dei servizi con limitazioni e-mail:

Si può iniziare con Amazon SNS gratuitamente. Ogni mese, i clienti Amazon SNS non pagano alcun addebito per le prime 100.000 richieste Amazon SNS, nessun addebito per le prime 100.000 notifiche tramite HTTP e nessun addebito per le prime 1.000 notifiche tramite posta elettronica.

+3

LOL Huckleberry, penso che il detto implichi che sia tuo amico. Poiché Huckleberry era amico di Tom Sawyer. –

+6

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

+0

"I'm your huckleberry ...": Val Kilmer come Doc Holiday in Tombstone –

1

Sembra che SES sia ciò di cui hai bisogno. http://aws.amazon.com/ses/ È molto economico rispetto ad altri servizi simili o alla costruzione di altri sistemi.

-1

Il servizio di Windows è il modo migliore, ma non devi prenderlo. Per eseguire il lavoro in background in ambiente ASP.NET c'è HostingEnvironment.QueueBackgroundWorkItem. Un buon punto di partenza per implementare il polling continuo (tramite polling lungo) è sqs-consumer.

Problemi correlati