【问题标题】:How to push the Laravel job to the queue如何将 Laravel 作业推送到队列中
【发布时间】:2020-01-02 17:01:55
【问题描述】:

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

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

它是 laravel 5.8 应用程序,带有 predis/predis: ^1.1。 我试图清除 cacheconfig。我曾尝试使用 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 指示应将作业推送到队列中以异步运行。

但我的工作肯定在进行中。

【问题讨论】:

  • 您能分享一下您是如何分配工作的吗?
  • XYJob::dispatch()->onQueue('custom-queue')

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你是如何分派工作的?你是否按照 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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 2015-10-14
      • 2022-08-20
      • 2021-06-13
      • 2018-07-15
      • 1970-01-01
      相关资源
      最近更新 更多