Не стандартная очередь задач

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

Не стандартная очередь задач

Сообщение raketa »

Есть такия задача, например отправка уведомления по email о новом сообщении на сайте
Казалось бы стандартно
- написали новое сообщение
- в очередь установили задачу на отправку email
- задачи обрабатываются - письма уходят

Не устраивает то что сообщения отправляются слишком часто.
Как организовать так чтобы уведомления отправлялись например каждые два часа и при этом отправлялись только актуальные уведомления, т.е. если в промежуток между отправками уведомлений пользователь зашел на сайт и прочитал свои письма то уведомления на эти прочитанные сообщения уже не нужны.
Можно конечно при обработке задачи делать запрос на факт того прочитано сообщение или нет - но хотелось бы без лишних запросов к базе.

Получается как бы две задачи "Поступило новое сообщение" - поставили задачу по отправки в очередь, "Сообщение прочитано пользователем" - нужно каким то образом "убить" первую задачу.

Можно ли такое организовать на Gearman е или RabbitMQ
я не нашел как сделать чтобы задачи обрабатывались не моментально и есть ли возможность из одной задачи "убить" вторую.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не стандартная очередь задач

Сообщение samdark »

Очередь с уникальным ключом в том же MySQL / NoSQL. Отправка хоть кроном.
raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

Re: Не стандартная очередь задач

Сообщение raketa »

похоже придется держать два механизма по очередям ....
один Gearman к тем задачам которые нужно обрабатывать постоянно без задержек и без анализа,
вторая очередь в MySQL / NoSQL для таких задач как отправка email
Ответить