У меня настроена транзакционная система электронной почты, и по умолчанию люди получают электронные письма по мере того, как происходят события:
class Comment
after_create :email_original_poster
def email_original_poster
UserMailer.delay.notify_author_of_comment self
end
end
Однако вместо того, чтобы получать электронную почту как есть, часть моих пользователей предпочла бы ежедневнуюили еженедельный дайджест.
Какой самый чистый и элегантный способ реализовать это?
У меня уже запущено delayed_job
, но на самом деле это не похоже на работу delayed_job
поскольку я ставлю в очередь данные, над которыми нужно действовать, а не действия, которые нужно выполнить.
... без переизобретения системы очередей
Я знаю, чтоочевидное решение - таблица queued_emails
и, конечно, я мог бы это сделать.Причина, по которой я задаю этот вопрос, заключается в том, что для этого нужно заново изобретать систему очередей.Мало того, что существует множество систем массового обслуживания, но, как указывает этот хорошо сформулированный пост из Percona, это хорошая идея, чтобы не создавать свои собственные:
http://www.engineyard.com/blog/2011/5-subtle-ways-youre-using-mysql-as-a-queue-and-why-itll-bite-you/
ЕстьВы внедрили дайджест-письмо, использовали ли вы delayed_job
и что вы узнали?