3 Stimmen

Was ist der beste Weg, um das Senden von vielen E-Mails in Rails zu behandeln?

Ich weiß, dass die E-Mail in der Datenbank persistiert wird und dann ein periodischer Job den eigentlichen Versand übernimmt. Ich weiß, dass ar_mailer gem dies tut.

Gibt es andere Ansätze? Gibt es bessere Alternativen? Was ist einfach der beste Weg, um viele E-Mails in Rails zu versenden?

2voto

Dary Punkte 51

Ar_mailer ist der beste Weg, den ich kenne, um mehrere E-Mails zu versenden. Es ist ziemlich intuitiv einzurichten. Ich würde mir die offizielle Dokumentation und dies wirklich guter Blogbeitrag .

Dary

1voto

Brian Armstrong Punkte 19437

Zusätzlich zu den anderen Antworten wollte ich nur noch hinzufügen:

ar_mailer könnte für den Versand einer "Menge" von E-Mails funktionieren, aber wenn Sie sehr viele E-Mails versenden (ich denke hier an etwas wie Aweber oder CampaignMonitor, wo es Hunderttausende pro Stunde sein könnten), bin ich nicht sicher, ob ar_mailer ideal ist. Der Grund dafür ist, dass es für JEDE E-Mail einen eigenen Datensatz in die Datenbank einfügt. Stellen Sie sich vor, Sie sind Aweber und haben einen Kunden, der eine E-Mail an seine Liste von 10.000 Personen sendet. Sie müssten 10.000 aktive Datensatzobjekte erstellen und alle 10.000 davon in der Datenbank speichern. Das ist mit Validierungen und Rückrufen usw. sehr teuer. Stellen Sie sich nun vor, Sie haben 100 Kunden mit Listen von 10.000 Personen, die alle in dieser Stunde E-Mails versenden. Ich denke, Ihre DB wird Schmerzen haben, es sei denn, Sie können die Validierungen/Callbacks usw. eliminieren und in DB-Aufrufe auf niedrigerer Ebene einsteigen.

Eine andere Möglichkeit wäre, die gesamte Warteschlangenverwaltung an Postfix oder etwas Ähnliches zu übergeben. Wenn Postfix irgendwie in der Mitte der Warteschlange starb, würden Sie wahrscheinlich keine Möglichkeit haben, dies von innerhalb Ihrer Rails-App tho zu bestimmen, so dass es etwas an diesem Punkt entkoppelt, aber wahrscheinlich viel effizienter ist. Ich habe nicht versucht, etwas von diesem btw, nur laut denken.

0voto

Mihai A Punkte 1461

Wir entlasten uns von langen Aufgaben, nicht nur vom E-Mail-Versand, sondern auch von einigen anderen Dingen, indem wir Workling y Starling (siehe die Eisenbahnsendung wie man es benutzt). Es gibt auch Alternativen, Github verwendet verzögerter_Job .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X