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 is a php-amqplib wrapper that eases the consumption of RabbitMQ. A painless way of using RabbitMQ.
You can use this package with
This package requires the following
- php >= 7.0
- ext-bcmath
- ext-sockets
The package works with Laravel, Lumen & Laravel zero. Install it via composer.
composer require anik/amqp
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.phpin your config directory with the following command.
php artisan vendor:publish --provider="Anik\Amqp\ServiceProviders\AmqpServiceProvider"- Add the service provider in your
bootstrap/app.phpfile.
$app->register(Anik\Amqp\ServiceProviders\AmqpServiceProvider::class);- Add configuration
amqp.phpin 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.
- Add provider in your
config/app.phpproviders array.
'providers' => [
/// ...
Anik\Amqp\ServiceProviders\AmqpServiceProvider::class,
]- Add configuration
amqp.phpin your config directory by copying it fromvendor/anik/amqp/src/config/amqp.php.
- 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,
],
]);The full documentation of this package is written in this article
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.