/laminas-rabbitmq

Laminas Module for RabbitMQ

Primary LanguagePHP

laminas-rabbitmq

Laminas Module for RabbitMQ

Install

composer require icetee/laminas-rabbitmq

Configure

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.

Send message

<?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);

Receive message

<?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

docker build --tag laminas-rabbitmq:latest .
docker run -it --name laminas-rabbitmq --rm -v $(pwd):/app laminas-rabbitmq:latest sh