Lumen队列问题:Project2无法向jobs表插入任务
排查Project2队列无法插入jobs表的问题
检查队列驱动配置
确认Project2的.env和config/queue.php里的队列驱动和Project1一致,必须设置成数据库驱动(QUEUE_CONNECTION=database),别错配成redis或者sync模式。验证任务类的核心要求
盯着StoreElasticListToReddis类查:- 有没有实现
ShouldQueue接口?没加这个接口的话,任务会直接同步执行,根本不会往jobs表里插 - 类的命名空间对不对,控制器里有没有正确引入这个类
- 构造函数处理
$input的逻辑有没有问题,会不会因为参数格式不对导致任务调度失败
- 有没有实现
核对数据库连接细节
哪怕两个项目连同一数据库,也要确认Project2的.env里DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD这些参数和Project1完全一致,还要检查这个数据库账号有没有jobs表的插入权限——说不定Project2用的账号权限不够。扒日志找具体报错
去Project2的storage/logs/laravel.log里翻日志,有没有任务调度时的报错信息,比如类找不到、参数验证失败、数据库写入报错,这些日志能直接给你指方向。确认jobs表结构一致
对比Project1和Project2的jobs表结构,看看有没有字段缺失、类型不匹配的情况,比如queue、payload、attempts这些必要字段是不是都有,字段长度够不够。做基础写入测试
在Project2里写段简单代码,直接往jobs表插条测试数据,看看能不能成功:DB::table('jobs')->insert([ 'queue' => 'default', 'payload' => json_encode(['test' => 'data']), 'attempts' => 0, 'reserved_at' => null, 'available_at' => now()->timestamp, 'created_at' => now()->timestamp, ]);如果这步失败,说明是数据库连接或权限的问题;如果成功,就把排查重点放回队列调度的逻辑上。
内容的提问来源于stack exchange,提问作者Thangarasu S
相关产品推荐
相关产品推荐

