Rails simple Рассылка / Список рассылки с уведомлением о новых результатах поиска по электронной почте

Мои пользователи могут сохранить свои предпочтительные поиски. Теперь мне нужно дать им возможность подписаться на них, чтобы получать уведомления по электронной почте о появлении новых результатов поиска (как в ответах Yahoo).

Я уже настроил почтовую программу, которая при запуске вручную работает нормально.

Теперь все, что мне нужно сделать, это позвонить по почте с запланированной работы, но... Я действительно не эксперт в этой области. Так, среди всякий раз, Delayed_job, Sidekiq, Resque Scheduler & co. с какой (или комбинацией из них) я должен пойти для такого рода задач (длительный процесс с несколькими рассылками)?

РЕДАКТИРОВАТЬ

Я разработал пример рабочего приложения, доступного на Github: NotiSearch.

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

PS: я решил положиться на всякий раз и delayed_job, так как они не имеют внешних зависимостей, при необходимости должно быть достаточно легко перейти к более масштабируемому решению.

2 ответа

Решение

Я лично работал с Resque и Sidekiq. Основное различие между этими двумя заключается в том, что Sidekiq порождает новые темы для каждой работы.

У Resque есть процесс для каждой работы. Это просто означает, что Resque предполагает сбой, и другие задания не будут сбои, если произойдет сбой одного процесса. Sidekiq, поскольку он работает с потоками, если один из этих потоков по какой-либо причине блокируется, весь процесс будет заблокирован.

Из ответа в другом QA Resque vs Sidekiq?

Resque:

Плюсы:

не требует безопасности потоков (работает практически с любым гемом); не имеет предпочтений переводчика (вы можете использовать любой ruby); множество плагинов. Cons

запускает процесс на одного работника (использует больше памяти); не повторяет задания (во всяком случае, из коробки). Sidekiq:

Pros

запускает поток на одного работника (использует гораздо меньше памяти); меньше разветвления (работает быстрее); больше вариантов из коробки. Cons

[огромный] требует поточной безопасности вашего кода и всех зависимостей. Если вы запускаете небезопасный код с потоками, вы напрашиваетесь на неприятности; гораздо меньше плагинов (на данный момент их всего 2); работает на некоторых рубинах лучше других (рекомендуются jruby и rubinius, эффективность МРТ снижается из-за GVL (глобальной блокировки ВМ)).

РЕДАКТИРОВАТЬ

В любом случае, чтобы ответить на ваш вопрос. Во всех проектах, которые мы использовали, мы используем Resque.

Попробуйте MailyHerald - гем управления рассылкой для рельсов. Это позволит вам настроить периодическую рассылку, рассылаемую пользователям, только при соблюдении определенных условий - т.е. доступны новые результаты поиска.

MailyHerald обрабатывает все почтовые сообщения автоматически в фоновом режиме (используя Sidekiq) и предоставляет удобный веб-интерфейс для управления.

Другие вопросы по тегам