0

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

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

它是 laravel 5.8 应用程序,带有 predis/predis: ^1.1。我试图清除缓存配置。我曾尝试使用作曲家转储自动加载。

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 指示应将作业推送到队列中以异步运行。

但我的工作肯定在进行。

4

2 回答 2

0

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

于 2019-09-03T10:41:02.367 回答
-1

你是如何分派工作的?您是否遵循了 Laravel doscs 站点上的示例https://laravel.com/docs/5.8/queues#dispatching-jobs

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

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

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

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

于 2019-08-29T14:48:36.130 回答