消息队列
到env配置文件中修改queue_connection=database 与数据库连接
执行步骤
1.迁移队列需要的数据表
php artisan queue:table //创建迁移文件
php artisan migrate //执行迁移文件
2.编写任务类
php artisan make:job SendEmail //在app\Jobs\SendEmail.php
class SendEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $email;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($email)
{
//
$this->email = $email;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Mail::raw('队列测试',function($message){
$message->to($this->email);
}
);
// Log::info('已发送邮件'.$this->email);
}
}
3.推送任务到队列
class StudentController extends Controller
{
public function queue(){
dispatch(new SendEmail('642370212@qqcom'));
}
}
//数据库中产生任务信息
4.运行队列监听器
php artisan queue:listen //数据库中任务信息消失
5.处理失败任务
php artisan queue:failed-table //创建失败的表的迁移文件
php artisan migrate //执行迁移文件
php artisan queue:failed //失败任务的详细信息
php artisan queue:retry 1 //执行指定的失败任务
php artisan queue:retry all //执行全部的失败任务
php artisan queue :forget 4 //删除指定的失败任务
php artisan queue:flush //删除全部的失败任务