laravel5.5+框架中安全的停止关闭运行中的队列
Laravel  /  管理员 发布于 3年前   2449
说到laravel就想到优雅二字,那么在laravel框架中如果优雅关闭/停止队列,如何安全的停止工作中的队列呢?
我们来看看队列相关命令
目前 Laravel5.5+未提供关闭队列的命令:
art | grep queue
horizon:clear Delete all of the jobs from the specified queue
horizon:forget Delete a failed queue job
horizon:snapshot Store a snapshot of the queue metrics
queue
queue:batches-table Create a migration for the batches database table
queue:clear Delete all of the jobs from the specified queue
queue:failed List all of the failed queue jobs
queue:failed-table Create a migration for the failed queue jobs database table
queue:flush Flush all of the failed queue jobs
queue:forget Delete a failed queue job
queue:listen Listen to a given queue
queue:restart Restart queue worker daemons after their current job
queue:retry Retry a failed queue job
queue:retry-batch Retry the failed jobs for a batch
queue:table Create a migration for the queue jobs database table
queue:work Start processing jobs on the queue as a daemon
解决方案:
启动队列:
queue:work
有个参数 --stop-when-empty 可以让队列运行完成后退出
运行中的队列
queue:restart
命令会等待队列中的 任务完成后 重启队列(优雅重启)
此命令同样作用于 Supervisor 运行的
queue:work --daemon
不过需要在 supervisor 的配置中加入
autorestart=true 进行设置。
队列 worker & 部署
因为队列 worker 是长生命周期的进程,所以在重启之前,任何的代码更改都不会生效。
因此,使用队列 worker 部署应用程序的最简单方法是在部署过程中重新启动 worker。
你可以通过执行 queue:restart 命令来优雅地重新启动所有的
worker:
php artisan queue:restart
该命令将指示所有队列 worker 在完成当前任务后优雅地 “死亡”,这样就不会丢失现有的任务。
由于在执行
queue:restart
命令时,队列 worker 将被杀掉,因此你应该运行一个进程管理器
(如 Supervisor) 来自动重新启动队列 worker。
技巧:
队列使用 缓存 来存储重启信号,因此在使用该特性之前,
你应该检查应用程序的缓存驱动程序是否正确配置。
相关链接:
https://learnku.com/docs/laravel/8.5/queues/10395#b08a06
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号