mickev/rabbitmq-scaler-bundle

提供了一种在需要时扩展RabbitMq消费者数量的命令。

安装: 19

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

v1.1.1 2016-11-15 12:18 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:58:05 UTC


README

提供了一种在需要时启动RabbitMq消费者的命令。

关于

RabbitMqScalerBundle通过添加一个在需要时处理消费者启动的命令,扩展了php-amqplib的RabbitMqBundle。

$ ./app/console michelv:rabbitmq:scaler your_queue

每N秒(默认为N=10),该命令将检查是否有足够的工人来处理给定队列中的消息数量。

该命令继承自rabbitmq:consumer,因此该命令的任何参数都将应用于启动消费者的命令。

消费者将被启动,但不会被终止。这可以通过设置消费者配置中的连接超时或使用--messages选项指定要处理的消息数量来自动完成。

安装

使用composer要求该包及其依赖项

$ composer require michelv/rabbitmq-scaler-bundle=dev-master

注册该包及其依赖包

// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new RCH\ConfigAccessBundle\RCHConfigAccessBundle(),
        new Michelv\RabbitMqScalerBundle\MichelvRabbitMqScalerBundle(),
    );
}

配置

队列选项

该命令将定期查询RabbitMQ服务器以获取正在消费的队列状态。为此,它需要知道您使用php-amqplib的RabbitMqBundle设置的精确选项。

例如,以下配置

old_sound_rabbit_mq:
    ...
    consumers:
        upload_picture:
            connection:       default
            exchange_options: {name: 'upload-picture', type: direct}
            queue_options:    {name: 'upload-picture'}
            callback:         upload_picture_service

您需要添加此配置

michelv_rabbit_mq_scaler:
    consumers:
        upload_picture:
            queue_options:    {name: 'upload-picture'}

命令默认值

您可以在配置文件中更改默认值。

默认值如下定义

michelv_rabbit_mq_scaler:
    debug: '%kernel.debug%'
    min_consumers: 1
    max_consumers: 10
    messages: 10
    interval: 10
    iterations: 0
    command: 'rabbitmq:consumer'
    prefix: ''
    log: '/dev/null'
    consumer_service_pattern: 'old_sound_rabbit_mq.%s_consumer'

示例

没有任务时没有消费者,最多20个消费者,每5秒检查一次

$ ./app/console michelv:rabbitmq:scaler --min 0 --max 20 --interval 5 your_queue

默认设置,但每个消费者最多处理50条消息,或当它们使用了超过100 MB的RAM时退出

$ ./app/console michelv:rabbitmq:scaler --messages 50 --memory-limit 100 your_queue

默认设置,但每个消费者都被niced,并且命令将在10次迭代后停止

$ ./app/console michelv:rabbitmq:scaler --prefix 'nice -n 15' --iterations 10 your_queue