介绍
Lumen队列服务提供了跨各种不同队列后端的统一API。队列使您可以将耗时的任务(例如在远程服务器上执行任务)的处理推迟到稍后的时间,这可以极大地加快对应用程序的Web请求。
与框架的许多其他部分一样,Lumen的排队作业的功能与Laravel的排队作业相同。因此,要了解有关在Lumen中排队作业的更多信息,请查看完整的Laravel队列文档。
组态
队列配置选项在.env文件中。
如果要彻底自定义队列配置,则必须将整个文件复制到项目根目录中的目录中,并根据需要调整必要的配置选项。如果该目录不存在,则应创建它。vendor/laravel/lumen-framework/config/queue.php``config``config
驱动程序先决条件
数据库
为了使用database队列驱动程序,您将需要数据库表来保存作业和失败:
Schema::create('jobs', function (Blueprint $table) {$table->bigIncrements('id');$table->string('queue');$table->longText('payload');$table->tinyInteger('attempts')->unsigned();$table->unsignedInteger('reserved_at')->nullable();$table->unsignedInteger('available_at');$table->unsignedInteger('created_at');$table->index(['queue', 'reserved_at']);});Schema::create('failed_jobs', function (Blueprint $table) {$table->increments('id');$table->text('connection');$table->text('queue');$table->longText('payload');$table->longText('exception');$table->timestamp('failed_at')->useCurrent();});
雷迪斯
为了使用Redis队列驱动程序,您将需要通过Composer 安装软件包。然后,您应该在文件中注册。illuminate/redis``Illuminate\Redis\RedisServiceProvider``bootstrap/app.php
其他队列依赖性
列出的队列驱动程序需要以下依赖项:
- 亚马逊SQS:
aws/aws-sdk-php ~3.0 - 豆豆
pda/pheanstalk ~3.0与Laravel的区别
与框架的许多其他部分一样,Lumen的排队作业的功能与Laravel的排队作业相同。因此,要了解有关在Lumen中排队作业的更多信息,请查看完整的Laravel队列文档。
但是,我们现在将讨论一些小的差异。首先,让我们谈谈Lumen中如何生成排队作业。发电机
Lumen不包括用于自动创建新Job类的生成器。相反,您应该复制ExampleJob框架随附的类。此类提供每个Job类共享的基本结构。底座Job所使用的ExampleJob已包括所需要的InteractsWithQueue,Queueable和SerializesModels性状:<?phpnamespace App\Jobs;class ExampleJob extends Job{/*** Create a new job instance.** @return void*/public function __construct(){//}/*** Execute the job.** @return void*/public function handle(){//}}
派遣工作
同样,您应该查阅Laravel队列的完整文档,以获取有关调度队列作业的完整信息。但是,就像在Laravel框架中一样,您可以使用该dispatch函数从Lumen应用程序中的任何位置分派作业:
当然,您也可以使用dispatch(new ExampleJob);
Queue外墙。如果您选择使用外观,请确保在文件中取消对该调用的注释:$app->withFacades()``bootstrap/app.phpQueue::push(new ExampleJob);
