我有一个由工匠命令创建的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指示应将作业推送到队列以异步运行。
但是我的工作肯定正在运行。
答案 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);
如果作业不是以这种方式分派的(即,您只是在更新作业类),则不会将其推送到队列中。