Как поставить задержку между неудачными заданиями на слушателях - PullRequest
0 голосов
/ 28 сентября 2018

Мне нужно установить задержку между конкретными неудачными заданиями на слушателях .Я знаю, если указать, что onption --delay=5 работает, но мне нужна конкретная задержка для слушателя (не для стандартной работы).Я пытаюсь установить свойство delay для Listener, но не работает.

<?php

namespace Froakie\Listeners;

use Carbon\Carbon;
use Froakie\Events\ExampleEvent;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;

/**
 * Class ExampleListener
 *
 * @package Froakie\Listeners
 * @author Miguel Borges <miguel.borges@edirectinsure.com>
 */
class ExampleListener implements ShouldQueue
{
    use InteractsWithQueue;

    /**
     * The number of seconds the job can run before timing out.
     *
     * @var int
     */
    public $timeout = 5;

    /**
     * The number of times the job may be attempted.
     *
     * @var int
     */
    public $tries = 3;

    public $delay = 5;

    public $seconds;

    /**
     * Handle the event.
     *
     * @param \Froakie\Events\ExampleEvent $event
     * @throws \Exception
     */
    public function handle(ExampleEvent $event)
    {
//        $this->delay(5);
            throw new \Exception('test');
    }
}

1 Ответ

0 голосов
/ 28 сентября 2018

Вы используете release для задержки повторной попытки.Пример:

public function handle(ExampleEvent $event)
{
    if ($this->attempts() <= $this->tries) {
        try {

            //Try something

        } catch (\Exception $e) {
            //Try again later
            $this->release($this->delay)
        }
    } else {
        //Force end the job
        $this->delete();
    }
}

Следует отметить, однако, что введенное значение является временем задержки в секундах.Так что, если вы хотите отложить это на 5 минут:

$this->release(300);
...