AMQP wrapper for Laravel and Lumen to publish and consume messages in bulk
mmanazar/laravel-amqp is a Laravel package for amqp wrapper for laravel and lumen to publish and consume messages in bulk.
It currently has 0 GitHub stars and 16 downloads on Packagist (latest version 1.2.2).
Install it with composer require mmanazar/laravel-amqp.
Discover more Laravel packages by mmanazar
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:
"bschmitt/laravel-amqp": "1.*"
$ php composer update
or
$ php composer require bschmitt/laravel-amqp
Create a config folder in the root directory of your Lumen application and copy the content from vendor/bschmitt/laravel-amqp/config/amqp.php to config/amqp.php.
Adjust the properties to your needs in here or .env file
return [
'use' => 'production',
'properties' => [
'production' => [
'host' => '',
'port' => '',
'username' => '',
'password' => '',
'vhost' => '/',
'connect_options' => [],
'ssl_options' => [],
'exchange' => 'amq.topic',
'exchange_type' => 'topic',
'exchange_passive' => false,
'exchange_durable' => true,
'exchange_auto_delete' => false,
'exchange_internal' => false,
'exchange_nowait' => false,
'exchange_properties' => [],
'queue_force_declare' => false,
'queue_passive' => false,
'queue_durable' => true,
'queue_exclusive' => false,
'queue_auto_delete' => false,
'queue_nowait' => false,
'queue_properties' => ['x-ha-policy' => ['S', 'all']],
'consumer_tag' => '',
'consumer_no_local' => false,
'consumer_no_ack' => true,
'consumer_exclusive' => false,
'consumer_nowait' => false,
'timeout' => 0,
'persistent' => true,
],
],
];
Register the Lumen Service Provider in bootstrap/app.php:
/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
*/
//...
$app->configure('amqp');
$app->register(Bschmitt\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:
'Bschmitt\Amqp\AmqpServiceProvider',
'Amqp' => 'Bschmitt\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::publish('routing-key', ['message1', 'message2', ......], a);
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
]);
This package is open-sourced software licensed under the MIT license