ermeo / rabbitmq-supervisor-bundle
Symfony扩展包,用于自动创建和更新RabbitMQ消费者守护进程的supervisor配置
Requires
- symfony/console: ~2.5|~3.0|~4.0
- symfony/framework-bundle: ~2.5|~3.0|~4.0
- symfony/process: ~2.5|~3.0|~4.0
Suggests
- oldsound/rabbitmq-bundle: The abandoned older version of php-amqplib/rabbitmq-bundle which also works
- php-amqplib/rabbitmq-bundle: The rabbitmq bundle for symfony which this bundle takes the consumer information from
README
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