2015-11-17 67 views
0

使用Laravel 5.1的队列,我在作业失败时抛出异常。在Laravel 5.1中将异常消息传递给队列::失败()?

throw new \Exception('No luck'); 

由于Laravel建议时dealing with failed jobs,我在AppServiceProvider“恶补”的例外,并用它来发送我们的团队的电子邮件。

public function boot() 
{ 
    Queue::failing(function ($connection, $job, $data) { 
     $info['data'] = $data; 
     \Mail::send('emails.jobs.failed', $info, function($message) { 
      $message->to('[email protected]')->subject('Job failed'); 
     }); 
    }); 
} 

在电子邮件中,我想发出异常的消息(在这种情况下“没有运气”。)。但我无法弄清楚如何将它传递给Queue :: failing()。

任何想法?

回答

0

调用失败回调后,Laravel rethrows the exception

看来如果你真的需要错误信息,你必须自己去捕捉异常。

+0

谢谢约瑟夫。我真的想弄清楚为什么让我们的团队知道为什么一个工作失败了。目前,只有被告知某项工作失败,没有详细说明原因。有没有更好的方法来做到这一点? –

+0

@MartyThomas - 我不确定你在问什么。就像我在答案中所说的那样,您可以捕获异常并在那里发送电子邮件。 –

+0

@MartyThomas - 你遇到这个问题的原因是因为失败并不意味着以你的方式使用。队列作业不应该使用异常来控制应用程序流。如果因为任何原因你不能执行这项工作,你应该在工作的处理者内部处理这个问题。 “失败”回调意味着意外的失败(异常仍会记录到主应用程序日志文件中)。 –

相关问题