dmasior/querabilis

该包已被放弃且不再维护。未建议替代包。

简单的PHP队列

0.6 2019-06-10 16:11 UTC

This package is auto-updated.

Last update: 2020-11-14 21:42:14 UTC


README

符合JAVA队列接口

Build Status Code Coverage

安装

$ composer require initx/querabilis

用法

驱动器

use Initx\Querabilis\Driver\FilesystemQueue;

$queue = new FilesystemQueue('./queue');

推送到队列

use Initx\Querabilis\Envelope;

$envelope = new Envelope('Payload goes here');

$queue->add($envelope);

从队列中拉取

$envelope = $queue->remove();

$envelope->getPayload(); // "Payload goes here"

当前支持的驱动器

  • Amazon SQS
  • Redis (Predis)
  • AMQP
  • Beanstalkd
  • 文件系统
  • 内存中

每个驱动器实现队列接口。

队列接口总结

插入
  • add(e) - 如果可能则插入元素,否则抛出异常
  • offer(e) - 如果可能则插入元素,否则返回false
移除
  • remove() - 移除并返回队列头部元素,否则抛出异常
  • poll() - 移除并返回队列头部元素,否则返回null
检查
  • element() - 返回但不移除队列头部元素,否则抛出异常
  • peek() - 返回但不移除队列头部元素,否则返回null

更多示例

Redis (Predis) 驱动器
use Predis\Client;
use Initx\Querabilis\Driver\RedisQueue;

$client = new Client(['host' => '127.0.0.1']);
$queue = new RedisQueue($client, 'queueName');
AWS SQS 驱动器
use Aws\Sqs\SqsClient;
use Initx\Querabilis\Driver\SqsQueue;

$client = new SqsClient(your_sqs_client_config);
$queue = new SqsQueue($client, 'queueName');
内存驱动器
use Initx\Querabilis\Driver\InMemoryQueue;

$queue = new InMemoryQueue();
Beanstalkd 驱动器
use Pheanstalk\Pheanstalk;
use Initx\Querabilis\Driver\BeanstalkdQueue;

$client = Pheanstalk::create([your_beanstalkd_config]);
$queue = new BeanstalkdQueue($client);
AMQP 驱动器
use PhpAmqpLib\Connection\AMQPStreamConnection;
use Initx\Querabilis\Driver\AmqpQueue;

$connection = new AMQPStreamConnection([your_amqp_config]);
$queue = new AmqpQueue($connection, 'queueName', 'exchange');