phobetor/rabbitmq-supervisor-bundle

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

安装次数: 514,461

依赖者: 0

建议者: 0

安全: 0

星标: 104

关注者: 10

分支: 42

开放问题: 8

类型:symfony-bundle

3.2.2 2020-11-13 20:42 UTC

This package is auto-updated.

Last update: 2024-08-29 03:59:27 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(),
    ];
}

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