2016-12-19 1 views
0

작업/작업자가 Laravel 큐 처리를 완료하는시기를 확인하는 모범 사례가 있습니까? 내가 생각할 수있는 유일한 접근법은 작업 테이블을 폴링하여 대기열에 더 이상 작업이 없는지 확인하는 것입니다.모든 작업 완료 후 폴링 Laravel 큐

나는 1,000 개의 작업을 대기열로 보내고 얼마 후에 다시 1,000 개를 다른 작업원으로 파견 할 것입니다. 가능한 경우 작업의 각 배치가 완료되면 이벤트를 트리거 할 수 있기를 바랍니다.

제안이나 제안에 감사드립니다.

답변

1

까지 문제가 없었습니다. 아니요, 그런 기능이 없습니다. 그러나 LAPT 전에 illuminate.queue.looping이었던 Illuminate\Queue\Events\Looping 이벤트를 수신하여 구현하고 대기열 크기를 확인하는 것이 간단합니다.

<?php 

use Illuminate\Contracts\Events\Dispatcher; 
use Illuminate\Queue\Events\Looping; 

class QueueSizeCheckerAndEventThingieSubscriber { 

    public function subscribe(Dispatcher $events) { 
     $events->listen(Looping::class, self::class . '@onQueueLoop'); // >= 5.4 
     $events->listen('illuminate.queue.looping', self::class . '@onQueueLoop'); // < 5.4 
    } 

    public function onQueueLoop() { 
     $queueName = 'my-queue'; 
     $queueSize = Queue::size($queueName); 

     if ($queueSize === 0) { 
      // Trigger your event. 
     } 
    } 

}