pmiroslawski / supervisor-controller-bundle
PHP Symfony Bundle,用于管理 supervisor 进程
v1.3.1
2021-08-25 14:26 UTC
Requires
- php: >7.4
- helppc/supervisor-bundle: ^1
- symfony/config: ^5
- symfony/console: ^5
- symfony/event-dispatcher: ^5.3
- symfony/framework-bundle: ^5
- symfony/yaml: ^5
Requires (Dev)
- phpstan/phpstan: ^0.12.96
- symfony/var-dumper: ^5
README
Symfony bundle,可根据给定的阈值配置自动管理 supervisor 进程。该 bundle 使用 helppc/supervisor-bundle 库实现。
使用示例
查看这个: pmiroslawski/supervisor-controller-demo 来查看 bundle 的实际应用。
要求
- PHP 7.4 或更高版本
- Symfony 5.x
安装
-
使用 Composer 需要此 bundle 和一个 PSR 7/17 实现
composer require pmiroslawski/supervisor-controller-bundle
-
在
config/packages/bit9_supervisor_controller.yaml
下创建 bundle 配置文件。这里是一个参考配置文件bit9_supervisor_controller: queues: - name: messages consumer: message_consumer numprocs: 50 # run 50 if more than 10000 thresholds: - messages: 100 # run 3 processes if less than 100 elements in queue num: 3 - messages: 1000 # run 5 processes if less than 1000 elements in queue num: 5 - messages: 10000 # run 10 processes if less than 10000 elements in queue num: 10
-
通过将其添加到数组中,在
config/bundles.php
中启用 bundleBit9\SupervisorControllerBundle\Bit9SupervisorControllerBundle::class => ['all' => true],
用法
该 bundle 提供了一个额外的公共服务,可用于指定队列的进程数量
Bit9\SupervisorControllerBundle\Service\Queue\Monitor
该服务只有一个方法 execute
,它接受队列名称和给定队列中当前消息数量的参数。根据配置中指定的队列服务阈值,启动额外的进程或停止正在运行的进程,这些进程正在消费给定的队列。
上述服务已在 supervisor:queue:monitor
命令中实现,该命令也包含在此 bundle 中。
此外,该 bundle 还提供了一组额外的命令,可在 supervisor 命名空间下使用,以帮助管理配置并轻松执行基本命令
supervisor-controller
supervisor-controller:program:status Get the supervisor program prcocesses statuses
supervisor-controller:program:update Run given number of processes for specified program
supervisor-controller:queue:check Check a specified queue to see number of elements.
supervisor-controller:queue:conductor Command run/stop some number of processes based on passed queue's elements number.
supervisor-controller:queue:config Get configuration for the given queue name
supervisor-controller:queue:watchdog Command checks queue and passed readed number of elements into queue conductor.
事件
该 bundle 提供了事件,并在某些特定情况下分发它们。有两种类型的事件组
当 bundle 启动/停止进程时,以下事件之一将被分发
Bit9\SupervisorControllerBundle\Event\ProcessesStartedEvent
Bit9\SupervisorControllerBundle\Event\ProcessesStoppedEvent
它们都包含
- 消费者名称(组名称)
- 启动/停止的进程数量
- 操作后的运行进程总数
当 bundle 启动/停止指定单个进程时,以下事件之一将被分发
Bit9\SupervisorControllerBundle\Event\ProcessStartedEvent
Bit9\SupervisorControllerBundle\Event\ProcessStoppedEvent
它们都包含
- 精确的进程名称(与 supervisor 中相同)
- 启动/停止给定进程的时间戳
许可证
MIT 许可证(MIT)。请参阅 许可证文件 以获取更多信息。