pekkis/queue

队列抽象库

v4.0.0 2018-08-17 09:32 UTC

README

Build Status

这是一个基于需求发现的小型、有观点的队列抽象库。它从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

版本升级

请参阅变更日志