Link Search Menu Expand Document

支持Enqueue

Enqueue 是一个 MIT 许可的开源项目,它的持续开发完全得益于社区和我们客户的支持。如果您想加入他们,请考虑:


Filesystem 传输

使用本地文件系统上的文件作为队列。 它为每个队列\主题创建一个文件。 消息是文件内的一行。 限制:它只在自动确认模式下工作,因此如果消费者崩溃,消息就会丢失。本地消息在其他服务器上是不可见的。

安装

$ composer require enqueue/fs

创建上下文

<?php
use Enqueue\Fs\FsConnectionFactory;

// 将消息存储在/tmp/enqueue文件夹中
$connectionFactory = new FsConnectionFactory();

// 同上
$connectionFactory = new FsConnectionFactory('file:');

// 存储在自动以文件夹中
$connectionFactory = new FsConnectionFactory('/path/to/queue/dir');

// 同上
$connectionFactory = new FsConnectionFactory('file:///path/to/queue/dir');

// 使用选项
$connectionFactory = new FsConnectionFactory('file:///path/to/queue/dir?pre_fetch_count=1');

// 作为数组
$connectionFactory = new FsConnectionFactory([
    'path' => '/path/to/queue/dir',
    'pre_fetch_count' => 1,
]);

$context = $connectionFactory->createContext();

// 如果已安装enqueue/enqueue库,则可以使用工厂从DSN构建上下文
$context = (new \Enqueue\ConnectionFactoryFactory())->create('file:')->createContext();

发送消息到主题

<?php
/** @var \Enqueue\Fs\FsContext $context */

$fooTopic = $context->createTopic('aTopic');
$message = $context->createMessage('Hello world!');

$context->createProducer()->send($fooTopic, $message);

发送消息到队列

<?php
/** @var \Enqueue\Fs\FsContext $context */

$fooQueue = $context->createQueue('aQueue');
$message = $context->createMessage('Hello world!');

$context->createProducer()->send($fooQueue, $message);

发送限期消息

<?php
/** @var \Enqueue\Fs\FsContext $context */

$fooQueue = $context->createQueue('aQueue');
$message = $context->createMessage('Hello world!');

$context->createProducer()
    ->setTimeToLive(60000) // 60秒
    ->send($fooQueue, $message)
;

消费消息

<?php
/** @var \Enqueue\Fs\FsContext $context */

$fooQueue = $context->createQueue('aQueue');
$consumer = $context->createConsumer($fooQueue);

$message = $consumer->receive();

// 处理消息

$consumer->acknowledge($message);
// $consumer->reject($message);

清除队列消息:

<?php
/** @var \Enqueue\Fs\FsContext $context */

$fooQueue = $context->createQueue('aQueue');

$context->purge($fooQueue);

返回首页