如果作业已在laravel中的队列中,则阻止类似的队列作业

时间:2017-10-17 13:08:26

标签: laravel-5 beanstalkd

我正在使用带有laravel的Beanstalkd来处理队列作业。如果作业已在队列中,我如何防止添加相同的作业。我正在使用laravel 5.3和Beanstalkd 3.1

2 个答案:

答案 0 :(得分:0)

没有阻止作业成为消息队列一部分的概念。 只是你不能这样做。

确保您的代码以不同于处理重复项的方式编写。如果你还需要一些工作,可以查看Redis的SortedSet,并使用它来永久存储你的工作。

答案 1 :(得分:0)

有一种解决方法,您可以尝试在调度队列之前添加以下代码

$queue = \DB::table(config('queue.connections.database.table'))->first();
    if($queue){
        $payload = json_decode($queue->payload,true);
        if($payload['displayName'] == 'App\Jobs\ProcessReport'){
            \flash('The report in process','info');
            return back()->withInput();
        }
    }
//dispatch the queue
ProcessReport::dispatch();