2017-10-17 3 views
0

J'utilise Beanstalkd avec laravel pour gérer le travail de la file d'attente. Comment puis-je empêcher d'ajouter le même travail si le travail est déjà en file d'attente? J'utilise laravel 5.3 avec Beanstalkd 3.1Empêcher un travail de file d'attente similaire si le travail est déjà en file d'attente dans laravel

+0

Vous avez un faible taux. Important sur SO, vous devez marquer les réponses acceptées en utilisant la coche à gauche de la réponse affichée, en dessous du vote. Cela augmentera votre taux. Voyez comment cela fonctionne en visualisant ce lien: http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work#5235 – Pentium10

Répondre

0

Il n'existe pas de concept permettant d'empêcher qu'un travail fasse partie d'une file d'attente de messages. Simplement vous ne pouvez pas faire cela.

Assurez-vous que votre code est écrit d'une manière qui gérera les doublons. Si vous avez encore besoin de quelque chose, peut-être vérifier le SortedSet de Redis, et l'utiliser pour stocker votre travail en permanence.

0

Il existe une solution de contournement, vous pouvez essayer d'ajouter le code ci-dessous la file d'attente avant expédition

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