在Laravel 5.4中作业失败时,不会调用failed()方法

时间:2017-04-10 11:17:14

标签: php laravel

目前我正在创建一个要排队的作业但由于某种原因,当在作业的failed()方法中执行的代码抛出异常时,不会触发handle()方法。这是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来保持队列运行

感谢

1 个答案:

答案 0 :(得分:0)

看起来像是调用了failed()方法,但由于$ lead属性不公开。当我想要检索属性的内容时,我遇到了异常。