milespong / dynamic-horizon
基于 Laravel Horizon 的动态队列实现
v1.0.0
2020-02-22 10:00 UTC
Requires
- php: >=7.1.0
- laravel/horizon: ^3.4
This package is auto-updated.
Last update: 2024-09-13 20:17:12 UTC
README
此包可以帮助动态扩展Laravel Horizon 监督器。
特性
Laravel Horizon,从最初配置创建监督器,对 horizon.php 有高度约束
Dynamic Horizon,基于 Laravel Horizon,即使在初始配置文件中,也可以动态创建监督器。这在 SaaS 系统中非常有用
安装
使用以下命令通过 composer 安装此包
composer require milespong/dynamic-horizon
更新 composer 后,将服务提供者添加到 config/app.php 中的 providers 数组中
MilesPong\Horizon\DynamicHorizonServiceProvider::class
Laravel 5.5+ 使用包自动发现,因此不需要手动添加 ServiceProvider。
用法
发布配置文件 dynamic-horizon.php
php artisan vendor:publish --provider="MilesPong\Horizon\DynamicHorizonServiceProvider" --tag=config
在 .env 中设置一个值 HORIZON_MASTER_ID 来指示当前 horizon 主监督器的标识符
初始化监督器
在 AppServiceProvider 的 boot 方法中添加以下代码片段
use \MilesPong\Horizon\DynamicHorizonSupervisor; ... public function boot() { $this->app->make(DynamicHorizonSupervisor::class)->initial('YOUR_MASTER_ID', function () { return [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['foo'], 'balance' => 'auto', 'processes' => 10, 'tries' => 3, 'sleep' => 3, ], // 'supervisor-2', 'supervisor-3', ... ]; }); }
部署新的监督器
当你想在引导程序之外的其他过程中添加监督器时,可以使用以下方法
use \MilesPong\Horizon\DynamicHorizonSupervisor; app()->make(DynamicHorizonSupervisor::class)->add('YOUR_MASTER_ID', function () { return [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['foo'], 'balance' => 'auto', 'processes' => 10, 'tries' => 3, 'sleep' => 3, ], // 'supervisor-2', 'supervisor-3', ... ]; });