2017-10-17 114 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();