linio / queue
摘要:Linio Queue 抽象工作队列,用于在多个工作进程间分配耗时任务。
3.0.0
2020-01-06 14:45 UTC
Requires
- php: ^7.4
- linio/util: ^3.0
- php-amqplib/php-amqplib: ^2.11
- psr/log: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-08-28 18:46:46 UTC
README
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());