artaxmax / worker-manager
RabbitMQ 工作者管理器
dev-master
2016-08-10 11:46 UTC
Requires
- hassankhan/config: ^0.10.0
- symfony/console: v3.1.1
- symfony/process: ^3.1
- symfony/yaml: ^3.1
This package is not auto-updated.
Last update: 2024-09-14 18:58:48 UTC
README
应用程序检查 rabbitMQ 队列消息速率和监督工作者状态。如果队列为空 - 应用程序将停止工作者。当接收到新消息时 - 将启动工作者。在监督配置中需要配置工作者的最大数量。
安装
composer require artaxmax/worker-manager
使用方法
创建控制台文件(app/console.php)
<?php
set_time_limit(0);
require_once __DIR__.'/../vendor/autoload.php'; // include composer autoload.php file
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use WorkerManager\Command\WorkerCommand;
$application = new Application();
$application->add(new WorkerCommand()); // add worker command
$application->run(new ArgvInput()); // run application
创建配置 YML 文件(config.yml)
-
配置 RabbitMQ API
worker_manager: rabbitmq: rabbit1: name: rabbit1 host: localhost username: username password: password
-
配置 supervisor
worker_manager: supervisor1: name: supervisor1 server: https://:8081 username: username password: password config: /.../supervisor.conf max_worker_count: 10
-
配置每个工作者
worker_manager: worker1: name: worker1 queue: worker1-queue vhost: / min_count: 1 max_count: 2
注册配置文件
<?php
use WorkerManager\Service\ConfigManager;
...
ConfigManager::register(__DIR__.'/config/config.yml');
运行应用程序
php app/console.php worker-manager:start
您可以添加自己的日志类。它应该实现 WorkerManager\Interfaces\LoggerInterface
接口
<?php
...
$logger = new YourLogger();
$command = new WorkerCommand();
$command->setLogger($logger);
...
$application->add($command);
...