我在laravel
,
Mail::queue($notificationCreated->template, $data, function ($message) use ($data) {
$message->to($data['email'], $data['first_name'])->subject($data['subject']);
});
是否可以在队列完成执行后执行任务,即在发送邮件后的情况下。
答案 0 :(得分:0)
API中没有这样的内容,因为这不是Queue
的重点。
它是异步所以在调用Mail::queue
之后,你会立即恢复控制并继续执行代码。这并不意味着实际的工作已被执行,只是已经安排好了。
并且没有办法在那里写Mail::whenJobIsComplete
,因为这意味着你的代码的整个执行必须停止并等待作业完成。这不可能异步。
但是,您可以定期轮询查看已完成的作业,并在发生这种情况时执行代码。有build-in功能可用于轮询API中的失败作业。
但最好的方法是编写自己的自定义queue listener,
并添加handleWorkerOutput
call以外的功能。
同样,这是异步的,此代码将在未来的某个不确定点运行,甚至不在您最初调用Mail::queue
的位置附近。