2016-08-22 14 views
1

この目的のために私のlaravelプロジェクトを使用してSMSを送ろうとしています。私はMessageControllerという名前の関数をsendSmsという名前で書きました。メッセージデータをSendScheduledSmsという名前のキューとハンドラに次のようにプッシュします。Laravel 5.2でキューを再試行する方法は?

public function handle() 
    { 
     $sentsms = App::make('App\Http\Controllers\MessageController')->sendSms($this->post_data); 
    } 

SMSが正しく送信されます。 $sentsmsは送信されたSMSのステータスです。 $status,successおよびfailの2つの値があります。ステータスがfailの場合、同じSMSを再送信します。どうやってやるの? sendSmsが実行されると、キューが削除されます。

私はデータベースキューを使用しています。

誰でも手助けできますか?

+0

送信SMSが失敗した場合は、もう一度そのSMSを送信する別のキューを作成してみてください。 –

答えて

1

Laravel Queueのネイティブの再試行機能を起動するには、ジョブhandleメソッドがある時点でエラーをスローする必要があります。

if ($sentsms == 'fail') { 
    throw new Exception('SMS failed to send.'); 
} 

failed_jobsテーブルが設定されている場合は、Laravelによってそのジョブを移動する必要があります。 Retrying failed jobsのドキュメントを参照してください。

コンソールスケジュール方法では、--triesフラグを設定して、Laravelが失敗したジョブを自動的に再実行させるようにします。

$schedule->command("queue:work --tries=3")->everyMinute(); 
関連する問題