場合によっては、Laravel ジョブを解放してキューに再度追加する必要があります。ただし、これを行うと、試行回数が増えます。これは 2 になり、キュー ワーカーが 1 回の試行に制限されている場合は実行されません。
試行回数を増やさずにリリースするにはどうすればよいですか?
私が使用しているリリースするには:
$this->release(30);
この行の前に、次のコードを試しました。
$payload = json_decode($this->payload, true);
if (isset($payload['attempts'])) {
$payload['attempts'] = 0;
}
$this->payload = json_encode($payload);
これは動作しません。プロパティはpayload
利用できません。Job クラスに存在するようです。
Laravel フレームワークでカウントをリセットする必要があるコードはRetryCommand
クラスにあります。それは次のとおりです。
protected function resetAttempts($payload)
{
$payload = json_decode($payload, true);
if (isset($payload['attempts'])) {
$payload['attempts'] = 0;
}
return json_encode($payload);
}
$payload
しかし、自分のジョブ クラスからにアクセスする方法がわかりません。
試行回数を増やさずにジョブをリリースするより良い方法はありますか?
Laravel 5.4 と Redis キュー ドライバーを使用しています。