Skip to content
forked from ssi-anik/amqp

php-amqplib wrapper that eases the consumption of RabbitMQ. A painless way of using RabbitMQ.

Notifications You must be signed in to change notification settings

mailerlite/amqp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Forked anik/amqp

This was forked in order to use newer version of the php-amqplib/php-amqplib package. Older version of this package does not support PHP 8.0 because in some cases required parameters follows optional parameters. PHP 8.0 deprecated required parameters after optional parameters in function/method signatures https://php.watch/versions/8.0/deprecate-required-param-after-optional

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. Don't forget to add $app->configure('amqp'); to your bootstrap/app.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.

About

php-amqplib wrapper that eases the consumption of RabbitMQ. A painless way of using RabbitMQ.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 98.9%
  • Dockerfile 1.1%