我需要在队列中只添加一个作业。如果队列中有工作人员,则必须取消下一个作业。 我的代码: 在Kernel.php中
$schedule->command('source')->withoutOverlapping()->everyMinute();
在命令
中$count = Redis::lrange('queues:source', 0, -1);
if (count($count) == 0)
dispatch((new \App\Jobs\Source())->onConnection('redis')->onQueue('source'));
在工作中
public function handle()
{
dump('job work');
sleep(2000);
}
但我在Horizon看到了下一份工作。如何解决这个问题?
答案 0 :(得分:0)
$schedule
->call(function () {
if (Queue::size('source') == 0)
dispatch(new TestJob())->onQueue('source');
})
->everyMinute();
在计划程序中它为我工作