2016-08-30 10 views
2

私はlaravel 5.0で作業中ですキューに入れられたイベントの優先順位付け方法

私はデータベースをキュードライバとして使用しています。 2つのイベントAとBを作成しました。イベントBが常に最初に実行されるようにします。 イベントAがイベントAの後にジョブテーブルに挿入されても、最初に実行する必要があります。

私のイベントの両方が

implements ShouldBeQueued 

use InteractsWithQueue; 

で構成されて私のイベントハンドラは、このようなものです。..

<?php namespace App\Handlers\Events; 

use App\Events\A; 

use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldBeQueued; 

class A implements ShouldBeQueued { 
use InteractsWithQueue; 

/** 
* Create the event handler. 
* 
* @return void 
*/ 
public function __construct() 
{ 
    // 
} 

/** 
* Handle the event. 
* 
* @param A $event 
* @return void 
*/ 
public function handle(A $event) 
{ 
    $alldeviceID = $event->alldeviceID; 
    $gcmMessage = $event->gcmMessage; 


    send_notification($alldeviceID, $gcmMessage); 

} 
} 

だから、両方のイベントは、ジョブテーブルと私に行きますそれらを処理する上司(プロセスマネージャー)を持っています..

..私はイベントA.

任意の助けをいただければ幸い上のイベントBに高い優先順位を与えたいだけという、これまでにlaravel> 5.0の

答えて

1

ソリューションを正常に動作しています。 マニュアルhttps://www.laravel.com/docs/5.3/queues#queue-prioritiesによれば、この目的のために異なるキューを定義する必要があります。たとえば、highlowという名前です。優先度の高いメッセージは、dispatch((new Job)->onQueue('high'));のようにhighキューに移動する必要があります。より多くのあなたが--queue=high,lowメッセージが処理される優先順位を定義するコマンド

php artisan queue:work --queue=high,low --daemon 

と次のようにあなたの労働者を起動する必要がありますどのようなものです。あなたは、私がこれに精通していますが、私の環境では5.0 laravel ..ですし、私は知りません以下のコマンド

php artisan queue:listen --queue=high,low --daemon 
+0

であなたの労働者を起動する必要がありますlaravel 5.0

\Queue::pushOn('high', new Job); 

ため

ソリューション私はイベントにどのように優先順位をつけますか? – Jaimin

+0

@Jaimin私は投稿を更新しました。 –

+0

私は質問を更新しました。私のイベントはこのようなものです。\ Queue :: putOn( 'high'、new Job)をどこに置くべきですか? – Jaimin

関連する問題