Есть длинные задачи, от 2 до 30 минут. Нужно чтобы очередь не росла, если в воркере есть уже задача.
Что имеем.
Kernel.php
$schedule->command('source')->withoutOverlapping()->everyMinute();
Command
$count = Redis::lrange('queues:source', 0, -1);
if (count($count) == 0)
dispatch((new \App\Jobs\Source())->onConnection('redis')->onQueue('source'));
Job для примера длинного воркера
public function handle()
{
dump('job work');
sleep(2000);
}
Но даже так вижу в очереди новые задачи, что висят по таймауту. То есть задача добавляется все равно, вне зависимости от условий.