laravel队列笔记

php artisan make:job job_name(新建队列任务)
生成位置:目录app/Jobs下
实现接口:Illuminate\Contracts\Queue\ShouldQueue(让 Laravel 知道这个任务应该是被放到队列里的,而不是要直接运行)

release()方法:手动释放任务,可指定一个参数,表示此任务被重新运行之前所等待的秒数
实现位置:Illuminate\Queue\InteractsWithQueue(trait)

attempts()方法:获取当前任务重试次数
实现位置:Illuminate\Queue\InteractsWithQueue(trait)

dispatch()方法:推送任务到队列上,辅助函数dispatch()
实现位置:Illuminate\Foundation\Bus\DispatchesJobs(trait)

onQueue()方法:指定任务运行的队列
实现位置:Illuminate\Bus\Queueable(trait)

onConnection()方法:指定任务运行的队列连接
实现位置:Illuminate\Bus\Queueable(trait)

delay()方法:任务推送到队列后指定时间再执行任务
实现位置:Illuminate\Bus\Queueable(trait)(单位:秒,注意:Amazon 的 SQS 服务最大的延迟时间是 15 分钟)

任务完成事件:
1. Queue::after()方法

任务失败事件:
1. Queue::failing()方法
2. 可以在任务类里直接定义一个 failed 方法,这个方法允许你指定错误发生时该执行哪些动作

php artisan queue:listen(运行被推送到队列里的任务)
php artisan queue:listen connection-name(指定连接名称)
php artisan queue:listen --queue=high,low(队列优先顺序)
php artisan queue:listen --timeout=60(设置每个任务的超时时间,单位:秒)
php artisan queue:listen --sleep=5(设置队列的休眠期,注意:队列在没有任务的状态下才会休眠)
php artisan queue:listen --tries=3(设置任务的最大重试次数)

php artisan queue:work(执行队列里面的第一个任务)
php artisan queue:work connection-name(指定连接名称)
php artisan queue:work connection-name --daemon(强制队列服务器持续处理任务,而不需要重新启动整个框架,注意:在任务运行完成前谨慎地释放所有内存占用较高的资源)
php artisan queue:work connection-name --queue=default(指定执行特定队列)

php artisan queue:restart(重启所有队列)

php artisan queue:failed(查看所有失败任务,数据源:failed_jobs数据表,数据字段:ID、连接、队列以及失败时间)

php artisan queue:retry job_id(重试指定失败任务)
php artisan queue:retry all(重试所有失败任务)

php artisan queue:forget job_id(删除指定失败任务)
php artisan queue:flush(删除所有失败任务)

 


 

Supervisor(一个 Linux 操作系统上的进程监控软件)
用途:Supervisor会在 queue:listen 或 queue:work 命令发生失败后自动重启它们。
Ubuntu 安装:sudo apt-get install supervisor
配置文件:/etc/supervisor/conf.d目录(可创建任意数量配置文件来要求 Supervisor 监控你的进程,文件后缀:.conf)
使用说明:http://supervisord.org/index.html


当创建/修改配置文件后需要更新 Supervisor 设置:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start 进程名:*

 

 
posted @ 2019-09-26 15:09  苦瓜糖水  阅读(527)  评论(0编辑  收藏  举报