teclaelvis/rabbitmq-phalcon-adapter

Phalcon项目的适配器包

1.0.4 2023-10-26 17:10 UTC

This package is auto-updated.

Last update: 2024-09-26 19:12:55 UTC


README

Phalcon队列管理器适配器

安装

composer require teclaelvis/rabbitmq-phalcon-adapter:1.0.2

初始配置

我们需要创建一个新的QueueManagerFactory类实例,并将适配器作为参数传递。

use Pmqelvis\QueueManagerFactory;
use Pmqelvis\RabbitMQAdapter;

require __DIR__ . '/vendor/autoload.php';


// // create a new instance of the rabbitmq adapter

$adapter = new RabbitMQAdapter('localhost', 5672, 'guest', 'guest');
$queueFactory = new QueueManagerFactory($adapter);

如果您正在使用ssl连接,可以使用以下代码

$adapter = new RabbitMQAdapter('localhost', 5672, 'guest', 'guest', true);
 
// continue with the configuration
...

在Phalcon中,我们可以将QueueManagerFactory类用作服务,例如

$di->set('queue', function () use ($config) {
    $ssl = getenv('APPLICATION_ENV') != 'development';
    $adapter = new RabbitMQAdapter(
        $config->rabbitmq->host,
        $config->rabbitmq->port,
        $config->rabbitmq->user,
        $config->rabbitmq->password,
        $ssl
    );
    return new QueueManagerFactory($adapter);
});

然后我们可以在我们的逻辑中使用它来获取队列管理器

$queueFactory = $this->di->get('queue');

...

生产者配置

以下示例展示了如何配置一个生产者

use Pmqelvis\QueueManagerFactory;
use Pmqelvis\RabbitMQAdapter;

require __DIR__ . '/vendor/autoload.php';


/**
 *  before we need get the QueueManagerFactory instance
 * $queueFactory = new QueueManagerFactory($adapter);
 */
...
...

$queue = $queueFactory->build('test', 'producer', 'test-exchange');
// or
$queue = $queueFactory->buildProducer('test' ,'test-exchange');
$queue->publish('Hello World from my library');
    

消费者配置

以下示例展示了如何配置一个消费者

use Pmqelvis\QueueManagerFactory;
use Pmqelvis\RabbitMQAdapter;

require __DIR__ . '/vendor/autoload.php';


/**
 *  before we need get the QueueManagerFactory instance
 * $queueFactory = new QueueManagerFactory($adapter);
 */
...
...


$queue = $queueFactory->build('test','consumer' ,'test-exchange');
// or
$queue = $queueFactory->buildConsumer('test' ,'test-exchange');

$queue->consume(function ($message) {
    echo $message->body;
    $message->ack();
});
    

上述代码将从队列中消费消息并打印消息体,而$message->ack()将确认消息。

RabbitMQ适配器选项

QueueManagerFactory选项

QueueManagerFactory->build()方法接受以下选项

如果类型是consumer,该方法返回一个ConsumeQueue实例;如果类型是producer,该方法返回一个ProducerQueue实例。