在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}"
默认的队列名是queue可以不指定消费的,但是指定名字的是要具体的队列名的。