我需要设置特定的失败作业之间的延迟,在侦听器上。
我知道是否应指定工作--delay=5
,但是我需要在侦听器上进行特定的延迟(而不是在标准作业上)。我尝试将属性delay
放在侦听器上,但不起作用。
<?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');
}
}
答案 0 :(得分:1)
您使用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);