pekkis / queue
队列抽象库
v4.0.0
2018-08-17 09:32 UTC
Requires
- php: >=7.1
- aws/aws-sdk-php: ~3.2
- iron-io/iron_mq: ~4.0
- php-amqplib/php-amqplib: ~2.5
- ramsey/uuid: ^3.8
- symfony/console: ~3.4|~4.0
- symfony/event-dispatcher: ~3.4|~4.0
Requires (Dev)
- phpunit/phpunit: ^7.3
README
这是一个基于需求发现的小型、有观点的队列抽象库。它从Xi Filelib和其他各种项目中提取出来。
它做什么?
消息由主题和任意数据组成(默认支持基本可序列化数据,可以添加自定义序列化器)。消息通过队列移动和加工。库为它的操作方法提取了一个简单、80/20 的领域,并抽象了消息队列后端之间的差异。
状态
该项目完全处于维护模式。自从那时起,我已“继续前进”,现在的代码主要是JS和React。
如果你想维护这个项目,请大声喊出来!
快速入门
<?php namespace Pekkis\Queue\Example; use Pekkis\Queue\Adapter\IronMQAdapter; use Pekkis\Queue\Message; use Pekkis\Queue\Queue; require_once (is_file(__DIR__ . '/bootstrap.php')) ? __DIR__ . '/bootstrap.php' : __DIR__ . '/bootstrap.dist.php'; // Create a new IronMQ backed queue $queue = new Queue( new IronMQAdapter(IRONMQ_TOKEN, IRONMQ_PROJECT_ID, 'pekkis-queue-example') ); // Queues can be emptied. $queue->purge(); // A message consists of a topic and data. A message instance with an UUID you can use is returned. $message = $queue->enqueue( 'pekkis.queue.example', array( 'some' => 'random data' ) ); // Dequeue and process a single message $received = $queue->dequeue(); $data = $received->getData(); var_dump($data); // Acknowledge the message (you're done with it) $queue->ack($received);
更好的例子
有关IronMQ和“真实生活”场景的端到端示例,请参阅examples
文件夹。
还可以查看Xi Filelib(v0.10+)以了解真实世界的实际用例!
有想法/愿望?联系或创建一个pull request!干杯!
支持的队列
- RabbitMQ(通过PECL和纯PHP)。
- IronMQ
- Amazon SQS
版本升级
请参阅变更日志