linio/queue

摘要:Linio Queue 抽象工作队列,用于在多个工作进程间分配耗时任务。

3.0.0 2020-01-06 14:45 UTC

README

Latest Stable Version License Build Status Scrutinizer Code Quality

Linio Queue 抽象工作队列,用于在多个工作进程间分配耗时任务。

安装

安装 Linio Queue 的推荐方法是 通过 composer

{
    "require": {
        "linio/queue": "~3.0"
    }
}

测试

要运行测试套件,您需要通过 composer 安装依赖项,然后运行 PHPUnit。

$ composer install
$ phpunit

使用

该库非常易于使用:首先,您必须注册服务。对于 Silex,已包含服务提供程序。只需注册它

<?php

use Linio\Component\Queue\QueueService;
use Linio\Component\Queue\Adapter;

$queue = new QueueService();
$queue->setAdapter(new Adapter\RabbitAdapter([
    'host' => 'localhost',
    'port' => 5672,
    'username' => 'guest',
    'password' => 'guest',
    'vhost' => '/'
]));

为了创建工作队列,您必须扩展抽象类 Job

<?php

use Linio\Component\Queue\Job;

class HelloWorldJob extends Job
{
    public function perform()
    {
        echo sprintf("Hello %s!\n", $this->payload);
        $this->finish();
    }
}

请注意,您必须始终调用 finish() 来完成工作并将它从队列中移除。您也可以调用 fail() 来失败工作。现在,为了向工作队列发布消息

<?php

use Linio\Component\Queue\QueueService;

$queue = new QueueService();
$queue->add(new HelloWorldJob('John')); // "John" is the payload

并且从工作队列中消费消息

<?php

use Linio\Component\Queue\QueueService;

$queue = new QueueService();
$queue->perform(new HelloWorldJob());