This package provides simple usage of rabbitmq.
usmonaliyev/laravel-simple-rabbitmq is a Laravel package for this package provides simple usage of rabbitmq..
It currently has 79 GitHub stars and 19.336 downloads on Packagist (latest version 1.2.0).
Install it with composer require usmonaliyev/laravel-simple-rabbitmq.
Discover more Laravel packages by usmonaliyev
or browse all Laravel packages to compare alternatives.
Last updated
The package for simplified RabbitMQ usage, supporting multiple connections, easy publishing, and consumer mode.
Multiple Connections: Effortlessly manage multiple RabbitMQ connections within the same application.
Exchange supporting: You can push messages to exchanges
Message Publishing: Easily publish messages to queues and exchange with a fluent, chainable syntax.
Consumer Mode: Enable consumers to receive and process messages from queues in real time.
Manage queues and exchanges in config file: You can register queues and exchanges in config/simple-mq.php and
define them in easy way which is amqp:define-queues command.
You can install the package via composer:
composer require usmonaliyev/laravel-simple-rabbitmq
Next step you must publish config and action register files:
php artisan vendor:publish --provider="Usmonaliyev\SimpleRabbit\SimpleRabbitMQServiceProvider"
As a result of this command, you will have a configuration file config/simple-mq.php and a registry file
routes/amqp-handlers.php.
The config/simple-mq.php config file contains RabbitMQ connections with credentials, queues, default connection and
default queue.
The next stage is configure .env file.
SIMPLE_MQ_CONNECTION=
SIMPLE_MQ_QUEUE=
SIMPLE_MQ_HOST=
SIMPLE_MQ_PORT=
SIMPLE_MQ_USERNAME=
SIMPLE_MQ_PASSWORD=
The package can publish and consume messages
You can publish a message with default connection and default queue:
<?php
use Illuminate\Http\Request;
use Usmonaliyev\SimpleRabbit\Facades\SimpleMQ;
class FooController
{
public function createFoo(Request $request)
{
// Something..
SimpleMQ::queue('foo-queue')
->setBody(['name' => 'First Foo'])
->handler('create-foo')
->publish();
return response()->json(['message' => 'OK']);
}
}
Also, exchange function publish message to RabbitMq exchange:
<?php
namespace App\Https\Controllers;
use Illuminate\Http\Request;
use Usmonaliyev\SimpleRabbit\Facades\SimpleMQ;
class FooController
{
public function createFoo(Request $request)
{
// Something..
SimpleMQ::exchange('foo-exchange')
->setBody(['name' => 'First Foo'])
->setRoutingKey('foo.bar')
->handler('create-foo')
->publish();
return response()->json(['message' => 'OK']);
}
}
If you have multiply connection to RabbitMq, you can publish a message with connection method.
<?php
namespace App\Https\Controllers;
use Illuminate\Http\Request;
use Usmonaliyev\SimpleRabbit\Facades\SimpleMQ;
class FooController
{
public function createFoo(Request $request)
{
// Something..
SimpleMQ::connection('foo-connection')
->queue('foo-queue')
->setBody(['name' => 'First Foo'])
->handler('create-foo')
->publish();
return response()->json(['message' => 'OK']);
}
}
Create app/AMQP/Handlers folder and create your handler classes.
For example:
<?php
namespace App\AMQP\Handlers;
use Usmonaliyev\SimpleRabbit\MQ\Message;
class FooHandler
{
public function handle(Message $message)
{
// do something...
$message->ack();
return ['ok' => true];
}
}
Don't forget acknowledge message end of process, else consumer does not accept next message.
Then register your handler in routes/amqp-handlers.php file.
<?php
use \App\AMQP\Handlers\FooHandler;
use \Usmonaliyev\SimpleRabbit\Facades\ActionMQ;
ActionMQ::register('create-foo', [FooHandler::class, 'handle']);
To consume messages use:
php artisan amqp:consume connection? queue?
The command requires two arguments which are connection and queue.
If you don't give them, command uses default connection and queue.
config/simple-mq.phpcomposer test
The MIT License.