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.php
in your config directory with the following command.
php artisan vendor:publish --provider="Anik\Amqp\ServiceProviders\AmqpServiceProvider"
- 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.
- 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
.
- 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.