pierophp/laravel-queue-manager

Laravel 队列管理器

v0.0.66 2022-01-18 19:27 UTC

README

Laravel 队列管理器,用于管理队列进程工作进程。

它使用 Supervisor 作为进程控制系统。

它还内置了一个调度系统。

安装

Composer

$ composer require pierophp/laravel-queue-manager

发布

$ php artisan vendor:publish --provider="LaravelQueueManager\Providers\LaravelQueueManagerServiceProvider"

运行迁移

如果你有低于 5.7 的 MySQL 版本,请在迁移中将字段 "schedule_config" 从 "json" 改为 "text"。

$ php artisan migrate

添加提供者

你需要在 config/app.php 文件中添加提供者

LaravelQueueManager\Providers\LaravelQueueManagerServiceProvider::class,

配置

生成作业

你需要生成一个扩展 LaravelQueueManager\AbstractJob 的类。

需要实现 2 个方法

分发新作业

你需要创建一个你作业的新实例并调用 dispatch() 方法。

或使用 CLI

$ php artisan queue-manager:generate-queue queue_name

你也可以设置可选参数

$ php artisan queue-manager:generate-queue queue_name foo=test,bar=test

数据库

为了作业能正确工作,需要在 queue_config 表中生成一行。

配置字段示例
{
  "nextQueues":{
    "onError":[
      {
        "url":"url/test",
        "data":{
          "param":value
        },
        "name":"QUEUE_NAME",
        "method":"POST",
        "service":"SERVICE",
        "delay_seconds":1
      },
      {
        "url":"url/test",
        "data":{
          "param":value
        },
        "name":"QUEUE_NAME",
        "method":"GET",
        "service":"SERVICE",
        "delay_seconds":1
      }
    ],
    "onSuccess":[
      {
        "url":"url/test",
        "data":{
          "param":value
        },
        "name":"QUEUE_NAME",
        "method":"POST",
        "service":"SERVICE",
        "delay_seconds":1
      }
    ]
  }
}

配置

在 queue_manager.php 配置文件中,你可以进行配置

显示所有可用的作业

$ php artisan queue-manager:show-jobs

获取错误事件

你需要在 AppServiceProvider 中添加并按你的喜好进行记录

$this->app['events']->listen(\LaravelQueueManager\Events\ScheduleError::class, function(\LaravelQueueManager\Events\ScheduleError $error){
    // my code
});

$this->app['events']->listen(\LaravelQueueManager\Events\DispatchQueueError::class, function(\LaravelQueueManager\Events\DispatchQueueError $error){
    // my code
});

部署

Supervisor 配置

你需要配置一个 cron,作为 root 每分钟运行一次以生成 supervisor 配置

$ php artisan queue-manager:generate-config

调度

你需要配置一个 cron,每分钟运行一次以生成调度器

$ php artisan schedule:run

队列重启

每次你更改 PHP 代码时,都需要重启队列。将此放在你的部署脚本中。

$ php artisan queue:restart

API 模式

介绍

为了轻松扩展你的作业机器,你可以以 API 模式运行队列。API 更容易应用自动扩展。

配置

在你的路由配置文件中添加

$api->post('queue/process', 'LaravelQueueManager\Http\Controllers\QueueController@process');

在 "queue_manager.php" 配置文件中编辑 execute_as_api 和 api_url 选项。