Laravel Redis 队列中未调用处理方法

Handle Method not being called in Laravel Redis Queue

将项目添加到队列时,由于某种原因没有调用 handle 方法。

出现 __construct 中的日志条目,但是当尝试登录 handle() 时,没有出现任何内容。

我使用的发送方法是ProcessImport::dispatch($path, $task->task_id);

我的队列服务配置为使用 Redis,redis 正在相应地存储所有数据。

我正在使用 Laravel 8。有什么问题吗?

<?php

namespace App\Jobs;

use App\Models\Tasks;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Http\Controllers\Products\Products;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Queue;
use Illuminate\Queue\Events\JobProcessing;
use Illuminate\Queue\Events\JobProcessed;
use Throwable;
class ProcessImport implements ShouldQueue, ShouldBeUnique
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $file_path;
    protected $response;
    protected $task;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($path, $task_id)
    {
        Log::info("Importing products (construct)");
        $this->task = Tasks::where('task_id', $task_id)->first();
        $this->file_path = $path;
        Log::info('Importing ' . $path);
    }

    private function getFilePath() {
        return $this->file_path;
    }

    /**
     * Handle a job failure.
     *
     * @param  \Throwable  $exception
     * @return void
     */
    public function failed(Throwable $exception)
    {
        $this->task->failed($exception->getMessage());
    }

    /**
     * Get the cache driver for the unique job lock.
     *
     * @return \Illuminate\Contracts\Cache\Repository
     */
    public function uniqueVia()
    {
        return Cache::driver('redis');
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Log::info("Importing products (handle)");
        $this->task->start();
        $products = new Products();
        $products->importProductsFromCSV($this->getFilePath());
        $this->task->success();
        Log::info("End of importing products..");
    }
}

您刚刚将作业推送到队列中,但尚未启动工作程序来处理它们。您可以 运行 工人:

php artisan queue:work