phobetor / rabbitmq-supervisor-bundle
Symfony 扩展包,用于自动创建和更新 RabbitMQ 消费者守护进程的 supervisor 配置
Requires
- symfony/console: ~2.5|~3.0|~4.0|~5.0
- symfony/framework-bundle: ~2.5|~3.0|~4.0|~5.0
- symfony/process: ~2.5|~3.0|~4.0|~5.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(), ]; }
Symfony 5
// config/bundles.php return [ ... Phobetor\RabbitMqSupervisorBundle\RabbitMqSupervisorBundle::class => ["all" => true], ... ];
零配置
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 和 worker 配置并启动守护进程
$ 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