2016-12-30 41 views
0

ユーザーのエンドポイントにコールバック要求を実行しているキューがあります。laravel queue(ジョブを5回再試行)&ジョブを「手動で」失敗したとマークする

ここに私のキューのコードがあります。

public function handle() 
{ 
    //send webrequest here.... 

//check the response of user backend 
    if ($res->getStatusCode() != 200 || $res->getBody()->getContents() != "*received*") 
     throw new Exception('callback url not reachable'); 
} 

public function failed(Exception $exception) 
{ 
    //check tries and try again if needed 

//check if job failed for 5 times 
//if not ->retry again in 5 minutes, increment the times tried 
//if yes ->disable API access, send email 

    Log::info("user email send, callback disabled!"); 
} 

どのジョブが失敗させるために!=「を受けた」と、特定のジョブが5回失敗したかどうかを確認WebRequestクラス答えがあるとき、(私の現在の例外は、全体のジョブ終了になりますか)? ジョブが失敗した場合は、5分後に再試行する必要があります。

私はこれらの点に関して文書を理解していません。

答えて

0

私はそれが遅すぎると知っていますが、昨日私はキューと同じ問題を抱えていました。新しい例外をスローすると、キューは何度も実行され、VMがハングアップします。実際には、コードに追加する必要があるのは、ジョブクラスのパブリックエリアに試行変数を定義することだけです。たとえば、5回だけ実行し、失敗したジョブにプッシュする必要があります)

class NewCustomer implements ShouldQueue 
 
{ 
 
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 
 

 
    public $tries = 5;

。 。 。

関連する問題