介绍
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
性状:<?php
namespace 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.php
Queue::push(new ExampleJob);