@sv8

Как удалить неактуальные задачи из очереди в Laravel?

Добрый день!

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

Проблемы:
1) Если событие удаляется, то задачи в очереди относительно этого события уже неактуальны. Не нашел в интерфейсе по работе с очередями в Laravel, как можно (и можно/нужно ли?) очищать очередь задач.
2) Если изменяется время начала события, необходимо запланировать новые задачи в очередь, в соответствии с актуальным временем начала события (потому что, допустим, уведомление должно падать пользователю строго за час до начала события). Но при этом в очереди хранятся старые задачи относительно этого события, опять же, как их выпилить из очереди?

Пожалуйста, кто сталкивался с подобной задачей, подскажите, как разрешить ее правильно? Как избавляться от неактуальных задач в очереди в Laravel?
  • Вопрос задан
  • 1140 просмотров
Решения вопроса 1
@vism
Очереди предназначены для выполнения событий в стороннем потоке так сказать.

А вы начали "самогон гнать".

Сделайте задачу которая будет проверять условия и выполнять код. А проверять она уже сама будет из источника данных.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Добавьте трейт Illuminate\Queue\InteractsWithQueue – с ним появится метод delete().

Посмотрите секцию документации Manually Accessing The Queue.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы