2016-08-22 1 views
1

Ich versuche, SMS mit meinem Laravel-Projekt zu diesem Zweck zu senden, schrieb ich Funktion in MessageController mit dem Namen sendSms. Ich schiebe Nachrichtendaten in eine Warteschlange mit dem Namen SendScheduledSms und Handler wie folgt.Wie wiederhole ich die Warteschlange in Laravel 5.2?

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

Senden von SMS funktioniert ordnungsgemäß. $sentsms ist der Status der gesendeten SMS. Es gibt zwei Werte für $status, success und fail. Ich möchte erneut versuchen, dieselbe SMS zu senden, wenn der Status fail lautet. Wie kann ich das machen? Wenn jetzt sendSms ausgeführt wird, löscht es die Warteschlange.

Ich verwende Datenbankwarteschlange.

Kann jemand helfen?

+0

Wenn Ihre sendenden SMS fehlgeschlagen sind, versuchen Sie, eine andere Warteschlange zu erstellen, die diese SMS erneut sendet. –

Antwort

1

Um die narrative Wiederholungsfunktion von Laravel Queue auszulösen, muss Ihre Job handle Methode irgendwann einen Fehler auslösen.

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

Wenn Sie eine failed_jobs Tabelle den Job einrichten sollte es durch Laravel bewegt werden. Siehe Dokumentation unter Retrying failed jobs.

Setzen Sie in Ihrer Konsolenzeitplanmethode das Flag --tries so, dass Laravel fehlgeschlagene Jobs automatisch erneut ausführt.

$schedule->command("queue:work --tries=3")->everyMinute();