如何在Tinker中向指定队列分发Laravel任务?
解决Laravel Tinker分发任务到指定队列的问题
错误原因
你之前的写法逻辑有误:\Bus::dispatch()执行后返回的是任务ID(字符串类型),而onQueue()是任务实例的专属方法,所以链式调用会触发「在字符串上调用成员函数」的错误。必须先给任务实例指定队列,再执行分发操作。
正确写法
以下三种方式都可以在Tinker中将任务分发到long-running-queue:
- 分步创建任务并设置队列
$job = new \App\Jobs\MyJob('MyArg'); $job->onQueue('long-running-queue'); \Bus::dispatch($job);
- 使用任务类的静态
dispatch方法链式调用
\App\Jobs\MyJob::dispatch('MyArg')->onQueue('long-running-queue');
- 一行代码完成(用括号包裹实例初始化和队列设置)
\Bus::dispatch((new \App\Jobs\MyJob('MyArg'))->onQueue('long-running-queue'));
验证方法
任务分发后,可以通过Horizon面板查看long-running-queue的待处理任务,或者执行Redis命令确认:
redis-cli KEYS "laravel:queues:long-running-queue*"
内容的提问来源于stack exchange,提问作者Andrew Waegel
相关产品推荐
相关产品推荐

