2016-12-02 8 views
1

通常は、最大試行は、そのようキュー・レベルで指定されています個々の最大試行回数のジョブをキューに入れる方法は?

php artisan queue:listen connection-name --tries=3 

私は、このジョブ・クラス内のジョブレベルで(他のジョブに影響を与えずに)上書きできるようにしたいと思います。

は、私はこれについて移動するには、3つの方法を考えることができますが、彼らはエレガントではないかもしれない:

  1. ルック失敗したキューにキューレベルでの試行の高い数を設定し、ジョブを再試行
  2. 失敗

注時に新しいジョブを作成します。

  1. 私の場合は、API経由のポーリングに関連しています。
  2. 私自身のモデル内で自分の投票の試みを記録しています。

答えて

2

attempts()メソッドを使用して、ジョブクラスの現在のジョブの試行を確認してください。以下のようなもの。 laravelリポジトリ上の

class MyJobClass implements ShouldQueue 
{ 

    public function handle() 
    { 
     if ($this->attempts() < 3) { 
      // do job things 
     } 
     else { 
      // delete job 
     } 
    } 
} 

リファレンスhttps://github.com/laravel/framework/blob/5.3/src/Illuminate/Queue/InteractsWithQueue.php#L21

+0

各試みはまだありません設定--triesにカウント?つまり、あなたの例では " - 3"より大きく設定する必要があります。したがって、キュー内のすべてのジョブが影響を受けます。 ジョブをカウントせずにジョブをキューに戻す方法があった場合、他のジョブは影響を受けません。 –

+0

あなたは '$ this-> delete()'を使ってジョブを削除するために 'else'を追加することができるので、最大カウントまで試行を続けません – xmhafiz

関連する問題