mickev / rabbitmq-scaler-bundle
提供了一种在需要时扩展RabbitMq消费者数量的命令。
v1.1.1
2016-11-15 12:18 UTC
Requires
- php: >=5.3.0
- php-amqplib/rabbitmq-bundle: ^1.0
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