AMQP wrapper for Laravel and Lumen to publish and consume messages
nassajis/laravel-amqp is a Laravel package for amqp wrapper for laravel and lumen to publish and consume messages.
It currently has 3 GitHub stars and 94 downloads on Packagist (latest version v1.2).
Install it with composer require nassajis/laravel-amqp.
Discover more Laravel packages by nassajis
or browse all Laravel packages to compare alternatives.
Last updated
AMQP wrapper for Laravel and Lumen to publish and consume messages especially from RabbitMQ
Add the following to your require part within the composer.json:
"nassajis/laravel-amqp": "1.*" (Laravel >= 5.5)
$ php composer update
or
$ php composer require nassajis/laravel-amqp
Create a config folder in the root directory of your Lumen application and copy the content from vendor/nassajis/laravel-amqp/config/amqp.php to config/amqp.php.
Adjust the properties to your needs.
return [
'use' => 'production',
'properties' => [
'production' => [
'host' => 'localhost',
'port' => 5672,
'username' => 'username',
'password' => 'password',
'vhost' => '/',
'exchange' => 'amq.topic',
'exchange_type' => 'topic',
'consumer_tag' => 'consumer',
'ssl_options' => [], // See https://secure.php.net/manual/en/context.ssl.php
'connect_options' => [], // See https://github.com/php-amqplib/php-amqplib/blob/master/PhpAmqpLib/Connection/AMQPSSLConnection.php
'queue_properties' => ['x-ha-policy' => ['S', 'all']],
'exchange_properties' => [],
'timeout' => 0
],
],
];
Register the Lumen Service Provider in bootstrap/app.php:
/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
*/
//...
$app->configure('amqp');
$app->register(Nassajis\Amqp\LumenServiceProvider::class);
//...
Add Facade Support for Lumen 5.2+
//...
$app->withFacades();
class_alias(\Illuminate\Support\Facades\App::class, 'App');
//...
Open config/app.php and add the service provider and alias:
'Nassajis\Amqp\AmqpServiceProvider',
'Amqp' => 'Nassajis\Amqp\Facades\Amqp',
Amqp::publish('routing-key', 'message');
Amqp::publish('routing-key', 'message' , ['queue' => 'queue-name']);
Amqp::publish('routing-key', 'message' , ['exchange' => 'amq.direct']);
Amqp::consume('queue-name', function ($message, $resolver) {
var_dump($message->body);
$resolver->acknowledge($message);
$resolver->stopWhenProcessed();
});
Amqp::consume('queue-name', function ($message, $resolver) {
var_dump($message->body);
$resolver->acknowledge($message);
});
Amqp::consume('queue-name', function ($message, $resolver) {
var_dump($message->body);
$resolver->acknowledge($message);
}, [
'timeout' => 2,
'vhost' => 'vhost3'
]);
\Amqp::publish('', 'message' , [
'exchange_type' => 'fanout',
'exchange' => 'amq.fanout',
]);
\Amqp::consume('', function ($message, $resolver) {
var_dump($message->body);
$resolver->acknowledge($message);
}, [
'exchange' => 'amq.fanout',
'exchange_type' => 'fanout',
'queue_force_declare' => true,
'queue_exclusive' => true,
'persistent' => true// required if you want to listen forever
]);
Amqp::consume('queue-name', function ($message, $resolver) {
var_dump($message->body);
$resolver->acknowledge($message);
}, [] , [
null,
1 ,
null
]);
This package is open-sourced software licensed under the MIT license
Thanks From [email protected]