Как не добавлять повторяющиеся задания в очередь в Laravel?
Не могу найти решение чтобы не добавлялись повторяющиеся задания в очередь. У клиента сейчас есть возможность выполнять задания из очередь только в 1 потоке, поэтому часто возникает ситуация когда добавляется важное задание, а там перед важным заданием висят другие задачи, которые по своей сути одинаковые, т.е. если они выполняют пересчет общей аналитики.
Существует ли возможность понять то, что такое задание уже существует в системе и не добавлять его, чтобы не плодились очереди одинаковых, мешая выполняться более важным задачам из той же очереди?
О софте:
Laravel 5.6
PHP 7.1
MySQL 5.7
Очередь в БД
Можно сделать как подсказывают авторы предыдущих ответов, но если понадобится сменить тип подключения, то такое решение работать не будет.
Можно обернуть добавление в очередь в команду и запускать через планировщик. У него есть специальный метод, который позволяет проверить была ли завершена предыдущая (та же самая) команда перед тем запустить её снова.
Вроде withoutOverlapping.
Ещё вариант.
Для задач с разным приоритетами создать разные очереди. И в нужной последовательности передать их обработчику.
php artisan queue:work --queue=high,low
Нужно смотреть в каждом случае что лучше подходит.