2010-03-11 23 views
0

Nous sommes sur le point de publier notre nouvelle application sur les rails et, jusqu'à présent, l'intérêt semble très fort, nous sommes un peu inquiets quant à l'endroit où les cols de bouteilles seront. L'un semble être les e-mails du système à l'inscription et dans d'autres situations. Est-ce correct?Dans une application de rails, l'e-mail doit-il être envoyé en arrière-plan ou de manière synchrone?

Les courriels individuels aux utilisateurs doivent-ils être envoyés de manière asynchrone en arrière-plan? Si oui, quelle serait la meilleure solution?

J'ai regardé quelques solutions et n'arrive pas à trouver quelque chose de définitif.

Répondre

0

Je dirais que cela dépend de vos besoins. Si vous devez être en mesure d'informer l'utilisateur que l'envoi de courrier a échoué, faites-le dans le même thread. Si ce n'est pas le cas, l'envoi de courrier devrait prendre en charge des tentatives comme etc., donc je mettrais le message dans une file/système de fichiers/base de données/etc et traiterais les détails de l'envoi.

0

Même fil, si vous me demandez ... en générant un fichier dans un dossier de dépôt, qu'un serveur de messagerie prend en charge. Ensuite, il n'y a pas trop de frais généraux, donc un thread seaprate a peu de sens.

Au moins c'est comme ça que je gère toujours ça.

+0

"générer un fichier dans un dossier de dépôt qu'un serveur de messagerie ramasse" - Je n'en ai jamais entendu parler auparavant. Pouvez-vous élaborer un peu plus sur comment cela fonctionne? Pouvez-vous faire cela avec ActionMailer? – chrishomer

+0

Eh bien, je ne fais pas de ruby;) ASP.NET seulement. J'ai un serveur de messagerie local écoutant un dossier spécifique, et ASP.NET écrit un dossier dans ce dossier de ramassage - le démon de courrier écoute les changements, récupère le fichier, l'envoie (en fait à mon serveur de relais de courrier). Le problème est: l'envoi d'e-mails peut prendre du temps et je ne veux rien avoir de non persistant. – TomTom