2016-11-18 6 views
0

ジョブ終了後にメールを送信しようとしていますが、キューに送信するのが好きです。しかし、私のコードは直接送信します。それはまあQueueing Mailキューメソッドでメールを送信しますが、直接送信しています

Mail::to($request->user()) 
    ->cc($moreUsers) 
    ->bcc($evenMoreUsers) 
    ->queue(new OrderShipped($order)); 

このことのプロセス

アプリ\メール\ CpJobFinished.php

<?php 
namespace App\Mail; 

use Illuminate\Bus\Queueable; 
use Illuminate\Mail\Mailable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Contracts\Queue\ShouldQueue; 
... 

class CpJobFinished extends Mailable implements ShouldQueue 
{ 
    use SerializesModels, Queueable; 

    ... 
    // Some code for formating message 

1つのCommandクラスで\アプリ\コンソール\従っています

私のコードコマンド\ CpRsyncJobs

<?php 
namespace App\Console\Commands; 

use App\Mail\CpJobFinished; 
use Illuminate\Support\Facades\Mail; 
use Illuminate\Console\Command; 
use Illuminate\Support\Facades\Artisan; 
... 

class CpRsyncJobs extends Command 

Mail::to($email)->queue(new CpJobFinished($job)); 

しかし、このコードでは、直接送信する代わりにキューに送信します。もちろん、キューはアクティブであり、他のタスクのために動作します。

+0

キューは、それが直接送信することが普通です空の場合は...キューを使用すると、ジョブが終了するまで待つという意味ではありません...どのようにそれは他の仕事のために働く? –

+0

Cronデバッグプロセスで停止しました。タスクがジョブテーブルに挿入されていません。キューにタスクを送信すると、このタスクはテーブルジョブの新しいエントリになります。私のコードは仕事に仕事を送りません。 – abkrim

答えて

0

Class mailableの宣言時にエラーが発生しました。

このコードを入力すると、キューに送信されます。

アプリ\メール\ CpJobFinished.php

<?php 
namespace App\Mail; 

use Illuminate\Bus\Queueable; 
use Illuminate\Mail\Mailable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Contracts\Queue\ShouldQueue; 
... 

class CpJobFinished extends Mailable // implements ShouldQueue 
{ 
    use Queueable, SerializesModels; 
関連する問題