进击的码农

laravel队列使用(database)

1、设置连接---虽说laravel的队列有配置文件config/queue.php,可是程序会优先从.env里面获取,我们可以直接在.env文件里配置QUEUE_CONNECTION=database,这样就指定了队列的驱动为database,当然项目刚开始为了方便调试,我们可以先设成sync同步执行,最后再设成database异步去操作
2、项目根目录下执行php artisan queue:table 和 php artisan migrate用来创建队列需要的表(应该会生成4张表,由于表的主键为bigint类型,所以确保数据库支持或者修改bigint为int,位置:database->migrations)
3、队列的任务类都默认放在 app/Jobs 目录下。如果这个目录不存在,运行php artisan make:job TestJob(你的队列文件名)
4、业务代码写在handle里面
5、程序中调用TestJob::dispatch($params)即可
延迟十分钟分发任务:TestJob::dispatch($params)->delay(now()->addMinutes(10));
指定queue:TestJob::dispatch($params)->onQueue('processing');
指定驱动:TestJob::dispatch($params)->onConnection('sqs')->onQueue('processing');
6、运行完之后,jobs表中就会有待执行的数据了,此时我们需要在根目录下运行php artisan queue:work命令来使队列开始工作,这样表中的数据会一一被消费
7、由于php artisan queue:work命令是不能被中断的,所以我们需要supervisor来确保队列处理器不会停止运行
8、队列代码修改需重启队列处理器:php artisan queue:restart

回复

This is just a placeholder img.