Lumen 6 中文文档 队列
介绍
Lumen 队列服务为各种不同的队列后端提供了统一的 API。队列允许您将耗时任务(如在远程服务器上执行任务)延后处理,这将大大加快对应用程序的 web 请求。
与框架的许多其他部分一样,Lumen 的排队作业与 Laravel 的排队作业功能相同。因此,要了解更多关于 Lumen 中排队作业的信息,请查看 完整的Laravel队列文档。
配置
队列配置选项位于 .env
文件中。
如果要彻底自定义队列配置,则必须将整个 vendor/laravel/lumen framework/config/queue.php
文件复制到项目根目录中的 config
目录中,并根据需要调整必要的配置选项。如果 config
目录不存在,那么您应该创建它。
驱动程序先决条件
Database
若要使用 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
若要使用 Redis
队列驱动程序,需要通过 Composer 安装 illuminate/redis
包。然后,您应该在 bootstrap/app.php
文件中注册Illuminate\Redis\RedisServiceProvider
。
其他队列依赖项
列出的队列驱动程序需要以下依赖项:
- Amazon SQS:
aws/aws-sdk-php ~3.0
- Beanstalkd:
pda/pheanstalk ~3.0
与 Laravel 的区别
与框架的许多其他部分一样,Lumen 的排队作业与 Laravel 的排队作业功能相同。因此,要了解更多关于 Lumen 中排队作业的信息,请查看 完整的Laravel队列文档。
不过,我们现在将讨论一些小的分歧。首先,让我们来谈谈排队作业在 Lumen 中是如何产生的。
生成器
Lumen 不包括自动创建新工作类的生成器。相反,您应该复制框架中包含的 ExampleJob
类。这个类提供每个作业类共享的基本结构。 ExampleJob
使用的基本 Job
已包含所需的 interacticsWithQueue
、Queueable
和 SerializesModels
traits:
<?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
facade。如果你选择使用 facade,请务必在 bootstrap/app.php
文件中取消对 $app->withFacades()
调用的注释:
Queue::push(new ExampleJob);
猜你喜欢: