teclaelvis / rabbitmq-phalcon-adapter
Phalcon项目的适配器包
1.0.4
2023-10-26 17:10 UTC
Requires
- php: >=7.0
- php-amqplib/php-amqplib: 3.5
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
实例。