laravel如何在工作中获得重试事件?

时间:2017-09-29 02:47:05

标签: php laravel queue jobs

我使用redis为每个用户存储未处理的排队作业数。

在为用户分派作业时,在控制器中将jobNumber增加1。

Job::dispatch($job);
$redis->SET( $uid, $redis->GET($uid) + 1);

在Job handle()函数中,当作业开始处理时,jobNumber减1。当作业失败时回滚。

public function handle()
{
    ...
    $redis->SET( $uid, $redis->GET($uid) - 1);
    ...
}
public function failed(\Exception $exception)
{
    ...
    $redis->SET( $uid, $redis->GET($uid) + 1);
    \Log::info('job failed');
}

当作业第一次完成时,这项工作很顺利。但是当一个作业第一次失败并重试redis中的数字时会减少1,而不应该。

注意failed函数仅在作业彻底失败时调用,重试时不会调用。如果有retried函数,则failed会更好。

那么如何在Job中捕获队列重试事件。

0 个答案:

没有答案