Каков наилучший способ обработки многих писем в Rails? - PullRequest
3 голосов
/ 25 января 2009

Я знаю о том, как сохранить электронную почту в БД, а затем позволить какой-то периодической работе обрабатывать фактическую отправку. Я знаю, что это делает ar_mailer gem.

Есть ли другие подходы? Есть ли лучшие альтернативы? Проще говоря, как лучше всего отправлять много писем в Rails?

Ответы [ 3 ]

2 голосов
/ 25 января 2009

ar_mailer - лучший из известных мне способов отправки нескольких электронных писем. Это довольно интуитивно понятно. Я бы проверил официальную документацию и этот действительно хороший пост в блоге .

Дарий

1 голос
/ 17 июля 2009

В дополнение к другим ответам я просто хотел добавить:

ar_mailer может работать для отправки «большого количества» электронных писем, но если вы отправляете ОЧЕНЬ большое количество электронных писем (я думаю, что-то вроде Aweber здесь или CampaignMonitor, где может быть сотни тысяч в час), я ' я не уверен, что ar_mailer идеален. Причина в том, что он добавляет отдельную запись в базу данных для КАЖДОГО электронного письма. Представьте, что вы Aweber, и клиент отправил электронное письмо своему списку из 10 000 человек. Вам просто нужно было создать 10000 активных объектов записей и сохранить все 10000 из них в базе данных. Это дорого с проверками и обратными вызовами и т. Д. Теперь представьте, что у вас есть 100 клиентов со списками из 10 000 человек, каждый из которых отправляет письма в этот час. Я думаю, что ваша БД будет болеть, если вы не сможете устранить проверки / обратные вызовы и т. Д. И перейти к вызовам БД более низкого уровня.

Другим вариантом будет просто передать всю очередь в Postfix или что-то в этом роде. Если Postfix каким-то образом погибнет в середине очереди, у вас, вероятно, не будет никакого способа определить это изнутри вашего приложения rails, так что в этот момент он несколько отделен, но, вероятно, более эффективен. Я не пробовал ничего подобного, просто размышлял вслух.

0 голосов
/ 27 января 2009

Мы разгружаем длинные задачи, не только отправку электронной почты, но и некоторые другие вещи, используя Workling и Starling (подробнее о том, как использовать ). Есть и альтернативы, Github использует delayed_job .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...