我正在尝试将Laravel的工作分配到redis。如果我做
Queue::push('LogMessage', array('message' => 'Time: '.time()));
然后将作业放入redis中的queues:default
键。 (请注意,我还没有运行侦听器;我只是想表明正在使用队列。)但是,如果我这样做
$this->dispatch(new AudienceMetaReportJob(1));
然后没有任何内容添加到redis中,作业立即执行。
工作定义:
<?php
use App\Jobs\Job;
use Illuminate\Queue\InteractsWithQueue;
/**
* Simple Job used to build an Audience Report. Its purpose is to
* allow code to dispatch the command to build the report.
*/
class AudienceMetaReportJob extends Job {
use InteractsWithQueue;
protected $audience_id;
/**
* @param $audience_id
*/
public function __construct($audience_id){
$this->audience_id = $audience_id;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(){
$audience_meta = new AudienceMeta();
$audience_meta->reportable = Audience::findOrFail($this->audience_id);
$audience_meta->clear()
->build()
->save();
}
}
注意:
'default' => 'redis',
php artisan queue:listen
正在运行我错过了哪些其他配置?为什么Queue类使用redis,而dispatch函数不支持?