Skip to content
php-amqplib wrapper that eases the consumption of RabbitMQ. A painless way of using RabbitMQ.
PHP Dockerfile
Branch: master
Clone or download
Latest commit 0c98ea1 Oct 14, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src AmqpManager class method visibility changed Sep 3, 2019
.editorconfig editorconfig added Aug 22, 2019
.gitignore project requirements added Aug 22, 2019
Dockerfile project requirements added Aug 22, 2019
composer.json added laravel ^6.0 Oct 14, 2019
composer.lock connection & channel configuration is set Aug 22, 2019
docker-compose.yml project requirements added Aug 22, 2019
readme.md Update readme Sep 12, 2019

readme.md

anik/amqp

anik/amqp is a php-amqplib wrapper that eases the consumption of RabbitMQ. A painless way of using RabbitMQ.

You can use this package with

Requirements

This package requires the following

  • php >= 7.0
  • ext-bcmath
  • ext-sockets

Installation

The package works with Laravel, Lumen & Laravel zero. Install it via composer.

composer require anik/amqp

For Laravel 

The service provider will automatically get registered. Or you may manually add the service provider in your config/app.php providers array:

'providers' => [
    /// ... 
    Anik\Amqp\ServiceProviders\AmqpServiceProvider::class,
]
  • Add configuration file amqp.php in your config directory with the following command.
php artisan vendor:publish --provider=Anik\Amqp\ServiceProviders\AmqpServiceProvider

For Lumen

  • Add the service provider in your bootstrap/app.php file.
$app->register(Anik\Amqp\ServiceProviders\AmqpServiceProvider::class);
  • Add configuration amqp.php in your config directory by copying it from vendor/anik/amqp/src/config/amqp.php.

N.B: For Lumen, you don't need to enable Facade.

For Laravel Zero

  • Add provider in your config/app.php providers array.
'providers' => [
    /// ... 
    Anik\Amqp\ServiceProviders\AmqpServiceProvider::class,
]
  • Add configuration amqp.php in your config directory by copying it from vendor/anik/amqp/src/config/amqp.php.

Usage

  • To Publish a message
<?php
// AmqpManager::publish($msg, $routing, $config);
app('amqp')->publish('Message to direct exchange', 'routing-key', [
    'exchange' => [
        'type'    => 'direct',
        'name'    => 'direct.exchange',
    ],
]);
  • To consume a message
<?php
use Anik\Amqp\ConsumableMessage;

// AmqpManager::consume($consumerHandler, $bindingKey, $config);
app('amqp')->consume(function (ConsumableMessage $message) {
    echo $message->getStream() . PHP_EOL;
    $message->getDeliveryInfo()->acknowledge();
}, 'routing-key', [
    'connection' => 'my-connection-name',
    'exchange'   => [
        'type'    => 'direct',
        'name'    => 'direct.exchange',
    ],
    'queue' => [
        'name'         => 'direct.exchange.queue',
        'declare'      => true,
        'exclusive'    => false,
    ],
    'qos' => [
        'enabled'            => true,
        'qos_prefetch_count' => 5,
    ],
]);

Documentation

The full documentation of this package is written in this article

Issues & PR

To err is human.

  • If the package generates any issue, please report it. Mention procedures to reproduce it.
  • I would like to merge your PRs if they enrich the package or solve any existing issue.
You can’t perform that action at this time.