2016-08-22 44 views
1

我想發送短信使用我的laravel項目爲此目的我寫MessageController功能sendSms。我正在將消息數據推送到名爲SendScheduledSms的隊列和處理程序,如下所示。如何在Laravel 5.2中再次嘗試隊列?

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

發送SMS正常工作。 $sentsms是發送短信的狀態。 $status,successfail有兩個值。如果狀態爲fail,我想重新嘗試發送相同的短信。我怎樣才能做到這一點? 現在執行sendSms時,它將刪除隊列。

我正在使用數據庫隊列。

任何人都可以幫忙嗎?

+0

當您的發送短信失敗時,嘗試創建另一個隊列,將再次發送該短信。 –

回答

1

爲了觸發Laravel Queue的本機重試功能,您的Job 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();