ermeo/rabbitmq-supervisor-bundle

Symfony扩展包,用于自动创建和更新RabbitMQ消费者守护进程的supervisor配置

3.1.0 2018-05-22 10:30 UTC

README

Latest Stable Version License

Symfony扩展包,用于自动创建和更新supervisor配置,以便于使用php-amqplib/rabbitmq-bundle(及其前身oldsound/rabbitmq-bundle)管理RabbitMQ消费者守护进程。

简而言之 | tl;dr

如果你使用php-amqplib/rabbitmq-bundle来处理与RabbitMQ的通信,只需安装supervisor,添加此扩展包并运行

$ app/console rabbitmq-supervisor:rebuild

以获得一个正在运行的supervisord实例,该实例将自动管理所有你的消费者守护进程。当你的工作配置或你的代码更改时,再次运行该命令,所有守护进程将被更新。

安装

安装supervisor。例如,在基于debian的发行版中通过apt-get

# apt-get install supervisor

通过composer添加扩展包

$ php composer require phobetor/rabbitmq-supervisor-bundle

这将把扩展包安装到你的项目的vendor目录中。

如果你的项目不使用Symfony Flex,还需要将扩展包添加到你的项目的AppKernel

// app/AppKernel.php

public function registerBundles()
{
    $bundles = [
        // […]
        new Phobetor\RabbitMqSupervisorBundle\RabbitMqSupervisorBundle(),
    ];
}

零配置

RabbitMQ supervisor扩展包默认使用预定义的配置。如果你保持这种方式,你将得到以下目录结构

supervisor/
└── dev
    ├── logs
    │   ├── stderr.log
    │   └── stdout.log
    ├── supervisord.conf
    ├── supervisord.log
    ├── supervisor.pid
    ├── supervisor.sock
    └── worker
        ├── queue1.conf
        ├── queue2.conf
        ├── queue3.conf
        └── queue4.conf

在symfony 2和3中,这将放置在app/目录内。

注意:symfony 4:为了避免在src/目录内,你需要根据你的需求设置路径。例如,为了在var/目录内使用标准结构,使用以下命令

rabbit_mq_supervisor:
    paths:
        workspace_directory:            "%kernel.project_dir%/var/supervisor/%kernel.environment%/"
        configuration_file:             "%kernel.project_dir%/var/supervisor/%kernel.environment%/supervisord.conf"
        pid_file:                       "%kernel.project_dir%/var/supervisor/%kernel.environment%/supervisor.pid"
        sock_file:                      "%kernel.project_dir%/var/supervisor/%kernel.environment%/supervisor.sock"
        log_file:                       "%kernel.project_dir%/var/supervisor/%kernel.environment%/supervisord.log"
        worker_configuration_directory: "%kernel.project_dir%/var/supervisor/%kernel.environment%/worker/"
        worker_output_log_file:         "%kernel.project_dir%/var/supervisor/%kernel.environment%/logs/stdout.log"
        worker_error_log_file:          "%kernel.project_dir%/var/supervisor/%kernel.environment%/logs/stderr.log"

高级配置

要查看所有配置选项,请运行

$ console config:dump-reference RabbitMqSupervisorBundle

从v1.*更新到v2.*时的BC(向后兼容)破坏

如果你在2.0版本之前使用了自定义命令,你需要更新它们。在大多数情况下,你只需删除命令名称之后的所有内容即可。

从v2.*更新到v3.*时的BC(向后兼容)破坏

默认情况下,命令将不再等待supervisord完成。如果你需要这样做(例如,获取错误反馈),请使用--wait-for-supervisord选项。

用法

构建或重建supervisor和工作配置,并启动守护进程

$ console rabbitmq-supervisor:rebuild

控制supervisord守护进程

$ console rabbitmq-supervisor:control stop
$ console rabbitmq-supervisor:control start
$ console rabbitmq-supervisor:control restart
$ console rabbitmq-supervisor:control hup