2017-10-17 2 views
0

대기열 작업을 처리하기 위해 laravel과 함께 Beanstalkd를 사용하고 있습니다. 작업이 이미 대기열에 있으면 동일한 작업을 추가하지 못하게하려면 어떻게합니까? 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();