Laravel 8 Jobs不派发 配置database队列驱动仍同步执行问题
排查步骤
- 优先清理配置缓存
修改.env的队列配置后如果没有清理Laravel的配置缓存,会导致新配置不生效,先执行命令清理:
清理后可以用php artisan config:cleartinker验证当前配置是否生效:
确认输出为php artisan tinker >>> config('queue.default')database则配置生效。 - 检查是否有硬编码的队列连接覆盖
检查你的CreateJob类里是否声明了$connection = 'sync'属性,或是派发任务时加了->onConnection('sync')调用,上述两种情况都会忽略全局队列配置,强制走同步执行。 - 检查是否开启了队列模拟
排查全局中间件、服务提供者或者当前请求链路里有没有写Queue::fake()的逻辑,队列模拟开启后所有任务都不会被实际写入队列。 - 确认队列表是否正常创建
如果你还没有生成队列相关的数据表,先执行迁移生成:
确认数据库中存在php artisan queue:table php artisan migratejobs表且字段结构正常。
完成上述排查后再重新派发任务,即可看到任务会被写入jobs表,接口会直接返回不会等待SSH操作执行,启动php artisan queue:work后任务会被异步消费。
内容的提问来源于stack exchange,提问作者Alexandru Popa
相关产品推荐
相关产品推荐

