如何将Laravel作业推入队列

时间:2019-08-29 12:03:39

标签: laravel laravel-5 laravel-5.8 laravel-queue laravel-jobs

我有一个由工匠命令创建的XYJob类,它实现了 ShouldQueue 类。 .env文件中的QUEUE_DRIVER = redis。

问题是当我分派工作时,它作为一个简单的php函数运行。队列侦听器未运行,但作业作为简单功能运行。

这是laravel 5.8应用程序,具有predis / predis:^ 1.1。 我试图清除缓存 config 。我曾尝试使用composer dump-autoload。

namespace Modules\ModuleName\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class XYJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        \Log::info('Job is running');
    }
}

Laravel文档说:

生成的类将实现ShouldQueue接口,从而向Laravel指示应将作业推送到队列以异步运行。

但是我的工作肯定正在运行。

2 个答案:

答案 0 :(得分:0)

Laravel 5.8 应用程序在.env文件中应具有 QUEUE_CONNECTION

答案 1 :(得分:-1)

您如何分派工作?您是否在https://laravel.com/docs/5.8/queues#dispatching-jobs(即

)的Laravel doscs网站上关注了该示例
\App\Jobs\ProcessPodcast::dispatch($podcast);

或调度(新\ App \ Jobs \ ProcessPodcast($ podcast);

dispatch(new \App\Jobs\ProcessPodcast($podcast);

如果作业不是以这种方式分派的(即,您只是在更新作业类),则不会将其推送到队列中。