当工作失败时,我的通知不会到达,我不确定为什么。在我的工作中,我有:
use Notification;
use App\Notifications\MonitoringMessage;
public function handle()
{
asdf;
}
public function failed(Exception $exception)
{
$message = ':warning: A job failed.';
Notification::route('slack', config('services.slack.webhook'))->notify(new MonitoringMessage($message));
}
该通知未使用use Queueable;
等排队,因为我读到这可能会导致问题,因为作业本身也在排队。
上面的代码当然会导致作业失败,我可以在failed_jobs表中看到它,但是通知不会发送。如果我将通知代码放在其他地方(例如在控制器中)并执行通知,则通知将被发送,以使代码正确。
答案 0 :(得分:0)
任何作业都通过handle()
方法处理。确保此方法不会因语法错误而失败。如果您的代码由于语法错误而失败,则您的其余代码将无法执行,因为它将永远不会被处理。强制执行概念错误,例如除以零强制错误:
use Notification;
use App\Notifications\MonitoringMessage;
public function handle()
{
$result = 1/0;
}
public function failed()
{
$message = ':warning: A job failed.';
Notification::route('slack', config('services.slack.webhook'))->notify(new MonitoringMessage($message));
}
正如您自己所说,不需要使用Exception类实现,因为它没有使用。