0mithun/laravel-simple-rabbitmq

This package provides simple usage of rabbitmq.

Maintainers

👁 0mithun

Package info

github.com/0mithun/laravel-simple-rabbitmq

pkg:composer/0mithun/laravel-simple-rabbitmq

Statistics

Installs: 209

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

2.0 2025-08-26 13:45 UTC

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT ddcc5f86e4935710ad3e05f59479030c23c415e5

  • Mithun Halder <mithunrptc.woop@gmail.com>

SimpleMQrabbit0mithun

This package is auto-updated.

Last update: 2026-06-18 10:19:17 UTC


README

laravel-simple-rabbitmq

👁 Image
👁 Image
👁 Image
👁 Image

The package for simplified RabbitMQ usage, supporting multiple connections, easy publishing, and consumer mode.

Documentation

Key Features

  • 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.

Installation

You can install the package via composer:

composer require 0mithun/laravel-simple-rabbitmq

Next step you must publish config and action register files:

php artisan vendor:publish --provider="Mithun\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=

Usage

The package can publish and consume messages

Publishing

You can publish a message with default connection and default queue:

<?php

use Illuminate\Http\Request;
use Mithun\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 Mithun\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 Mithun\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']);
 }
}

Consuming

Create app/AMQP/Handlers folder and create your handler classes.

For example:

<?php

namespace App\AMQP\Handlers;

use Mithun\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 \Mithun\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.

Contracts

👁 Image

Plans

  • Exchange configuration in config/simple-mq.php
  • Setup testing.

Testing

composer test

License

The MIT License.

laravel-simple-rabbitmq

laravel-simple-rabbitmq