fm-labs / php-q
PHP的简单队列包装库
dev-main
2021-01-05 01:34 UTC
Requires
- php: ^7.2|^8.0
- ext-json: *
Requires (Dev)
- ext-redis: *
- php-amqplib/php-amqplib: ^2.12
- phpunit/phpunit: ^7|^8|^9
Suggests
- ext-gearman: *
- ext-pcntl: *
- ext-redis: *
- php-amqplib/php-amqplib: ^2.12
This package is auto-updated.
Last update: 2024-09-05 09:27:02 UTC
README
PHP的简单队列抽象层。
需求
- php 7.2+
安装
$ composer require fm-labs/php-q
使用
use FmLabs\Q\Q; use FmLabs\Q\Queue\BaseQueue; use FmLabs\Q\Adapter\MemoryAdapter; use FmLabs\Q\Message\TextMessage; // Configure a queue Q::config('awesome_queue'); // (same as) Q::config('awesome_queue', [ 'queueClass' => \FmLabs\Q\Queue\BaseQueue::class, 'adapterClass' => \FmLabs\Q\Adapter\MemoryAdapter::class, 'messageClass' => \FmLabs\Q\Message\TextMessage::class, ]); // Push a message to the queue Q::push('awesome_queue', new TextMessage('Hello world!')); // Pop message from queue $msg = Q::pop('awesome_queue'); echo $msg->getPayload(); // 'Hello World!'
高级使用
use FmLabs\Q\Q; // Rejecting a message $msg = Q::pop('awesome_queue'); if ($msg->getPayload() != 'Hello World!') { //$msg->reject(); Q::reject('awesome_queue', $msg); } // Requeue a message $msg = Q::pop('awesome_queue'); if ($msg->getPayload() != 'Hello World!') { //$msg->requeue(); Q::requeue('awesome_queue', $msg); } // Drop a message $msg = Q::pop('awesome_queue'); if ($msg->getPayload() != 'Hello World!') { //$msg->drop(); Q::drop('awesome_queue', $msg); }
文档
见 文档
运行测试
$ composer run test $ composer run test-verbose $ ./vendor/bin/phpunit --bootstrap tests/bootstrap.php tests/
变更日志
[0.1]
- 添加 Queue-, Adapter-, Message-接口
- 添加 MemoryAdapter
- 添加 RabbitMqAdapter
路线图
- LocalFile 适配器
- Redis 适配器
- Amazon AWS SQS 适配器
- PDO 适配器
- Memcached 适配器
- MongoDB 适配器
- Beanstalkd 适配器
- Http 适配器
- IronMQ 适配器
- Stomp 适配器
- WindowsAzure ServiceBus 适配器
许可证
见 LICENSE 文件