pmiroslawski/supervisor-controller-bundle

PHP Symfony Bundle,用于管理 supervisor 进程

v1.3.1 2021-08-25 14:26 UTC

This package is auto-updated.

Last update: 2024-08-26 15:27:31 UTC


README

Symfony bundle,可根据给定的阈值配置自动管理 supervisor 进程。该 bundle 使用 helppc/supervisor-bundle 库实现。

使用示例

查看这个: pmiroslawski/supervisor-controller-demo 来查看 bundle 的实际应用。

要求

安装

  1. 使用 Composer 需要此 bundle 和一个 PSR 7/17 实现

    composer require pmiroslawski/supervisor-controller-bundle
  2. 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
  3. 通过将其添加到数组中,在 config/bundles.php 中启用 bundle

    Bit9\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)。请参阅 许可证文件 以获取更多信息。