Laravel作业调度员不使用Queue

时间:2016-11-18 17:51:58

标签: php laravel-5 message-queue

我正在尝试将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();
    }
}

注意:

  • Audience作业似乎正常完成,但就像QUEUE_DRIVER env变量设置为同步一样
  • Redis已正确配置,因为我可以手动使用Queue:push()函数并可以从redis读取
  • 我已将QUEUE_DRIVER env变量设置为redis,即使我在config / queue.php文件中对redis进行硬编码,问题仍然存在:'default' => 'redis',
  • 我没有php artisan queue:listen正在运行

我错过了哪些其他配置?为什么Queue类使用redis,而dispatch函数不支持?

0 个答案:

没有答案