2016-12-19 9 views
0

ジョブ/ワーカーがLaravelキューの処理を終了するタイミングを特定するベストプラクティスはありますか?私が考えることができる唯一のアプローチは、ジョブテーブルをポーリングしてキューにジョブがなくなったことを確認することです。すべてのジョブが完了した後のLaravelキューのポーリング

私が持っている課題は、定期的に1000個のジョブをキューに送り、その後しばらくして別のジョブを1000個送り、次に別のジョブを送り出すことです。可能であれば、ジョブの各バッチが完了したらイベントをトリガーできるようにしたいと思います。

ご意見やご指摘ありがとうございます。

答えて

1

まで問題は発生していませんでした。いいえ、このような機能はありません。ただし、Illuminate\Queue\Events\Loopingイベント(Laravel 5.4より前はilluminate.queue.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. 
     } 
    } 

} 
関連する問題