队列

更新时间: 2019-08-01 16:47

简介

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 (5.7.*) 扩展包。然后在 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 不包括用于自动创建新 Job 类的生成器。因此你需要复制框架所带的 ExampleJob 类。这个类提供了每个 Job 类共享的基本结构。 ExampleJob 所继承的 Job 基类已包含所需的 InteractsWithQueueQueueableSerializesModels trait:

<?php

namespace App\Jobs;

class ExampleJob extends Job
{
    /**
     * 创建一个新的作业实例。
     *
     * @return  void
     */
    public function __construct()
    {
        //
    }

    /**
     * 执行作业。
     *
     * @return  void
     */
    public function handle()
    {
        //
    }
}

调度作业

再次重申,你应该查阅完整的 Laravel 文档以获取有关调度队列作业的完整信息;和 Laravel 框架一样,你可以使用 dispatch 函数从 Lumen 应用程序中的任意位置调度作业:

dispatch(new ExampleJob);

当然,你也可以使用 Queue facade。如果你选择使用 facade,请务必在 bootstrap/app.php 文件中取消对 $app->withFacades() 调用的注释:

Queue::push(new ExampleJob);

查看更多 Laravel 中文文档 信息

计算统计

计算统计

Geof H.Givens、Jennifer A.Hoeting / 王兆军、刘民千、邹长亮、杨建峰 / 人民邮电出版社 / 2009-09-01 / 59.00元

随着计算机的快速发展, 数理统计中许多涉及大计算量的有效方法也得到了广泛应用与迅猛发展, 可以说, 计算统计已是统计中一个很重要的研究方向. 本书既包含一些经典的统计计算方法, 如求解非线性方程组的牛顿方法、传统的随机模拟方法等, 又全面地介绍了近些年来发展起来的某些新方法, 如模拟退火算法、基因算法、EM算法、MCMC方法、Bootstrap方法等, 并通过某些实例, 对这些方法的应用进行......一起来看看 《计算统计》 这本书的介绍吧!

MD5 加密

MD5 加密

MD5 加密工具

正则表达式在线测试

正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具

HEX HSV 转换工具

HEX HSV 互换工具