artaxmax/worker-manager

RabbitMQ 工作者管理器

dev-master 2016-08-10 11:46 UTC

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);
    ...