fm-labs/php-q

PHP的简单队列包装库

dev-main 2021-01-05 01:34 UTC

This package is auto-updated.

Last update: 2024-09-05 09:27:02 UTC


README

PHP的简单队列抽象层。

Build Status

需求

  • 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 文件