Laminas Module for RabbitMQ
composer require icetee/laminas-rabbitmq
create configuration with rabbitmq
key as described below:
<?php
return [
'rabbitmq' => [
'host' => 'localhost',
'port' => 5672,
'login' => 'guest',
'password' => 'guest',
],
]
Make sure the module enabled and try an example below.
<?php
/**
* @var \RabbitMQ\Interfaces\RabbitMQServiceInterface $mq
* @var \Psr\Container\ContainerInterface $container
*/
$mq = $container->get(\RabbitMQ\Interfaces\RabbitMQServiceInterface::class);
$publisher = new \RabbitMQ\Publisher\WorkQueuePublisher('test_work_queue');
$job = new \RabbitMQ\Job\Job(['some' => 'data']);
$mq->setPublisher($publisher);
$mq->push($job);
<?php
/**
* @var \RabbitMQ\Interfaces\RabbitMQServiceInterface $mq
* @var \Psr\Container\ContainerInterface $container
*/
$mq = $container->get(\RabbitMQ\Interfaces\RabbitMQService::class);
$consumer = new \RabbitMQ\Consumer\WorkQueueConsumer('test_work_queue');
$mq->setConsumer($consumer);
$mq->receive(function (\RabbitMQ\Consumer\Message $message) {
echo $message->getBody();
$message->ack();
});
docker build --tag laminas-rabbitmq:latest .
docker run -it --name laminas-rabbitmq --rm -v $(pwd):/app laminas-rabbitmq:latest sh