Иногда мне нужно выпустить задание 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
недоступно. Кажется, он присутствует в задании. класс.
Платформа кода 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.