1

場合によっては、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 キュー ドライバーを使用しています。

4

1 に答える 1