【发布时间】:2017-09-05 09:57:51
【问题描述】:
目前我正在创建一个要排队的作业,但由于某种原因,当作业的handle() 方法中执行的代码抛出异常时,failed() 方法没有被触发。这是 Laravel 中的某种错误还是我做错了什么?正在调用我的 AppServiceProvider 中的 Queue::failing() 方法
<?php
namespace App\Jobs;
use App\Models\Email;
use Carbon\Carbon;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class MyCommand implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;
protected $lead;
/**
* Create a new job instance.
*/
public function __construct($lead)
{
$this->lead = $lead;
}
/**
* Execute the job.
*/
public function handle()
{
throw new \Exception("error!");
}
/**
* The job failed to process.
*
* @param \Exception $exception
*/
public function failed(\Exception $exception)
{
\Log::critical('wooot');
}
}
在上述工作中。 failed() 方法永远不会被调用。我们使用supervisor来保持队列运行
谢谢
【问题讨论】:
-
哪个 laravel 版本?
-
laravel版本是5.4
-
您如何调度作业以及如何运行它以及使用哪个驱动程序?另外,您可能想在
src/Illuminate/Queue/FailingJob.php中放置一些日志并在那里调试..