提供命令队列的库

0.2.1 2016-10-24 13:59 UTC

This package is auto-updated.

Last update: 2024-08-27 05:06:03 UTC


README

此库提供了创建命令后端代理系统的基本接口和工具,允许通过可扩展的后端工作基础设施处理任务。

Build Status Scrutinizer Code Quality Code Coverage Downloads Latest Stable Version

Isobar Poland合作创建的库。

Isobar Poland

安装

步骤 1:下载库

打开命令行控制台,进入您的项目目录,然后执行以下命令以下载此软件包的最新稳定版本

$ composer require gendoria/command-queue "~0.2.0"

此命令要求您全局安装了Composer,如Composer文档中的安装章节所述。

使用方法

此库提供了创建命令队列系统的构建块,您可以将任务委托给后端工作进程池以进行进一步处理。

就本身而言,它有一个简单的“直接”命令队列实现,其中命令不是发送,而是在本地由驱动程序执行。

使用直接处理驱动程序的最简单的工作队列链示例如下。

use Gendoria\CommandQueue\Command\CommandInterface;
use Gendoria\CommandQueue\CommandProcessor\CommandProcessorInterface;
use Gendoria\CommandQueue\ProcessorFactory\ProcessorFactory;
use Gendoria\CommandQueue\SendDriver\DirectProcessingDriver;
use Psr\Log\LoggerInterface;

class SimpleCommand implements CommandInterface
{
    public $testData;
    
    public function __construct($testData)
    {
        $this->testData = $testData;
    }
}

class SimpleProcessor implements CommandProcessorInterface
{
    /**
     *
     * @var LoggerInterface
     */
    private $logger;
    
    /**
     * Process command.
     * 
     * @param SimpleCommand $command
     */
    public function process(CommandInterface $command)
    {
        echo "Command class: ".get_class($command)."\n";
        echo "Command payload: ".$command->testData."\n";
        echo "\n";
    }

    public function setLogger(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    public function supports(CommandInterface $command)
    {
        return $command instanceof SimpleCommand;
    }

}

$simpleProcessor = new SimpleProcessor();

$processorFactory = new ProcessorFactory();
$processorFactory->registerProcessorForCommand(SimpleCommand::class, $simpleProcessor);

$driver = new DirectProcessingDriver($processorFactory);

for ($k = 0; $k < 5; $k++) {
    $command = new SimpleCommand("Test ".($k+1));
    $driver->send($command);
    sleep(1);
}

您可以在examples/direct.php文件中找到此示例。如果您运行它,您应该看到以下输出

$ php example/direct.php
Command class: SimpleCommand
Command payload: Test 1

Command class: SimpleCommand
Command payload: Test 2

Command class: SimpleCommand
Command payload: Test 3

Command class: SimpleCommand
Command payload: Test 4

Command class: SimpleCommand
Command payload: Test 5

直接处理驱动程序在现实世界的应用程序中不太适用,因为它不委托任何任务。但是,您可以在应用程序开发的早期阶段使用它,当您知道,对于您计划稍后委托给后端处理的任务。