Актуальная проблема
Я использую Rails 3.0.4 и MongoDB через mongoid.
Я использую @ mailgun для доставки своих электронных писем. Я отправляю как массовые (например, новостные письма), так и транзакционные (например, активировать аккаунт, забыл пароль) электронные письма. Прямо сейчас я использую один домен (переводится в одну очередь на конце почтового пистолета) для доставки этих писем. Проблема возникает, когда у меня в очереди уже много массовых писем, и кто-то регистрирует или запрашивает новый пароль. Я хочу, чтобы транзакционные электронные письма доставлялись до массовых рассылок, но очередь почтового ящика работает на основе FIFO.
Я подумал, что для смягчения этой проблемы можно использовать разные домены (следовательно, разные очереди, которые могут обрабатываться одновременно) для массовой и транзакционной почты. В rails настройки smtp - это настройки уровня приложения, а не настройки уровня запроса. Итак, я решил, что буду использовать разные среды для разных настроек SMTP.
У меня также есть система очередей для писем, и я использую delayed_job , чтобы справиться с этим. Я не могу найти способ разграничить массовую и транзакционную почту в delayed_job. Итак, я решил переместить мою систему очередей в Rescue + Redis или Beanstalked + Stalker, где я могу помечать очереди и просить работника обрабатывать только определенную очередь.
Вопрос
Я хочу что-то более простое в обслуживании, наименее ресурсоемкое и хорошо масштабируемое.
- С delayed_job мне не нужно запускать какой-либо другой сервер и контролировать его.
- Для delayed_job я использовал ломтик 256 МБ на стоечном пространстве, но для redis и stalker потребовался бы другой сервер, либо resque, либо beanstalkd.
- Я понятия не имею о масштабировании, но уже 2 месяца с момента запуска моего приложения, и я уже отправил 30 000+ писем.
Если есть какие-либо альтернативы портированию с delayed_job на redis или stalker, пожалуйста, дайте мне знать.
Обновление:
Похоже, delayed_job также имеет поддержку именованных очередей, но это пока не задокументировано. Открыв тикет для добавления документации, буду обновлять детали, как только я знаю, как ими пользоваться:)