alive2212 / laravel-amqp
{This is Fork of anik/amqp package} of php-amqplib wrapper that eases the consumption of RabbitMQ. A painless way of using RabbitMQ
1.5.4
2021-01-18 11:51 UTC
Requires
- php: >=7.0
- illuminate/container: ^5.8|^6.0|^7.0|^8.0
- illuminate/pipeline: ^5.8|^6.0|^7.0|^8.0
- illuminate/support: ^5.8|^6.0|^7.0|^8.0
- laravel/helpers: ^1.2
- php-amqplib/php-amqplib: ^2.9 !=2.12.0
README
This is fork of anik/amqp for our usage.
in this package we change 'resolveConnectionName' and 'getConnection' method to a public method, to customize our channel and queue and exchange.
Many Many Thanks anik/amqp
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 fromvendor/anik/amqp/src/config/amqp.php
. Don't forget to add$app->configure('amqp');
to yourbootstrap/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 fromvendor/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.