Есть такия задача, например отправка уведомления по email о новом сообщении на сайте
Казалось бы стандартно
- написали новое сообщение
- в очередь установили задачу на отправку email
- задачи обрабатываются - письма уходят
Не устраивает то что сообщения отправляются слишком часто.
Как организовать так чтобы уведомления отправлялись например каждые два часа и при этом отправлялись только актуальные уведомления, т.е. если в промежуток между отправками уведомлений пользователь зашел на сайт и прочитал свои письма то уведомления на эти прочитанные сообщения уже не нужны.
Можно конечно при обработке задачи делать запрос на факт того прочитано сообщение или нет - но хотелось бы без лишних запросов к базе.
Получается как бы две задачи "Поступило новое сообщение" - поставили задачу по отправки в очередь, "Сообщение прочитано пользователем" - нужно каким то образом "убить" первую задачу.
Можно ли такое организовать на Gearman е или RabbitMQ
я не нашел как сделать чтобы задачи обрабатывались не моментально и есть ли возможность из одной задачи "убить" вторую.
Не стандартная очередь задач
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Не стандартная очередь задач
Очередь с уникальным ключом в том же MySQL / NoSQL. Отправка хоть кроном.
Нравится Yii? Давайте сделаем его лучше!.
Re: Не стандартная очередь задач
похоже придется держать два механизма по очередям ....
один Gearman к тем задачам которые нужно обрабатывать постоянно без задержек и без анализа,
вторая очередь в MySQL / NoSQL для таких задач как отправка email
один Gearman к тем задачам которые нужно обрабатывать постоянно без задержек и без анализа,
вторая очередь в MySQL / NoSQL для таких задач как отправка email