Laravel中Redis队列数据未消费

在laravel里写了个redis队列的生产消费程序

执行消费命令,指定连接connection和队列queue名称可以正常消费,但是不指定队列名称就不能消费,为什么呢?难道不是应该不写明会执行所有的队列数据吗?如果每个都要写明具体的队列名称,那如果很多业务的情况下,supervisor进程管理岂不是很麻烦,每个业务都得配置一条命令吗?

ClivedeMacBook-Pro:future clive$ php artisan queue:work redis --queue=order_process
[2018-10-29 06:05:45][sPm52R5M4HyiaiJGfvoWmXz5U4mKZcRf] Processing: App\Jobs\ProcessOrder
[2018-10-29 06:05:45][sPm52R5M4HyiaiJGfvoWmXz5U4mKZcRf] Processed:  App\Jobs\ProcessOrder
//消费成功,日志也输出了
^C
ClivedeMacBook-Pro:future clive$ php artisan queue:work redis --queue
//没有数据消费了......
127.0.0.1:6379> lrange queues:order_process 0 -1
1) "{\"displayName\":\"App\\\\Jobs\\\\ProcessOrder\",\"job\":\"Illuminate\\\\Queue\\\\CallQueuedHandler@call\",\"maxTries\":null,\"timeout\":null,\"timeoutAt\":null,\"data\":{\"commandName\":\"App\\\\Jobs\\\\ProcessOrder\",\"command\":\"O:21:\\\"App\\\\Jobs\\\\ProcessOrder\\\":8:{s:8:\\\"\\u0000*\\u0000order\\\";O:45:\\\"Illuminate\\\\Contracts\\\\Database\\\\ModelIdentifier\\\":4:{s:5:\\\"class\\\";s:16:\\\"App\\\\Models\\\\Order\\\";s:2:\\\"id\\\";i:35;s:9:\\\"relations\\\";a:0:{}s:10:\\\"connection\\\";s:5:\\\"mysql\\\";}s:6:\\\"\\u0000*\\u0000job\\\";N;s:10:\\\"connection\\\";s:5:\\\"redis\\\";s:5:\\\"queue\\\";s:13:\\\"order_process\\\";s:15:\\\"chainConnection\\\";N;s:10:\\\"chainQueue\\\";N;s:5:\\\"delay\\\";N;s:7:\\\"chained\\\";a:0:{}}\"},\"id\":\"sPm52R5M4HyiaiJGfvoWmXz5U4mKZcRf\",\"attempts\":0}"
阅读 5.4k
1 个回答

默认的队列名是queue可以不指定消费的,但是指定名字的是要具体的队列名的。

php artisan queue:work  这个可以直接消费所有默认的队列
php artisan queue:work --queue=xxxx 这个消费队列名为xxx的 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题