2017-10-17 115 views
0

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

+0

你有一个率低。重要的是,您必须使用投票下方发布答案左侧的勾号标记接受的答案。这会增加你的速度。通过查看此链接了解其工作原理:http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work#5235 – Pentium10

回答

0

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

请确保您的代码是以不会处理重复的方式编写的。如果您仍然需要解决某些问题,可以查看Redis的SortedSet,并使用它来永久存储您的工作。

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();