PHPackages                             batatahub-tech/laravel-rabbitmq - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. batatahub-tech/laravel-rabbitmq

ActiveLibrary

batatahub-tech/laravel-rabbitmq
===============================

Full RabbitMQ package for Laravel: manage exchanges, queues, bindings, publish and consume messages

v1.0.1(6mo ago)042MITPHPPHP ^8.1

Since Oct 26Pushed 6mo agoCompare

[ Source](https://github.com/batatahub-tech/laravel-rabbitmq)[ Packagist](https://packagist.org/packages/batatahub-tech/laravel-rabbitmq)[ RSS](/packages/batatahub-tech-laravel-rabbitmq/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (3)Used By (0)

Laravel RabbitMQ
----------------

[](#laravel-rabbitmq)

A lightweight, fluent RabbitMQ integration for Laravel. Manage exchanges, queues, and bindings; publish and consume messages; generate consumer classes; and configure multiple connections.

Supports Laravel 10/11/12 and PHP 8.1+ (uses `php-amqplib/php-amqplib` v3).

### Features

[](#features)

- Manage exchanges, queues, and bindings via a fluent service
- Publish JSON messages easily
- Consume via Artisan or programmatically
- Multiple connections out of the box
- Artisan generator for consumer classes with publishable stub
- Configuration publishing

---

Installation
------------

[](#installation)

```
composer require batatahub-tech/laravel-rabbitmq
```

The service provider is auto-discovered. No manual registration needed.

### Publish configuration and stub (optional)

[](#publish-configuration-and-stub-optional)

```
# Publish config/rabbitmq.php
php artisan vendor:publish --tag=config --provider="BatataHub\\RabbitMQ\\Providers\\RabbitMQServiceProvider"

# Publish the consumer stub to stubs/rabbitmq-consumer.plain.stub
php artisan vendor:publish --tag=stubs --provider="BatataHub\\RabbitMQ\\Providers\\RabbitMQServiceProvider"
```

---

Configuration
-------------

[](#configuration)

After publishing, tweak `config/rabbitmq.php`. You can define multiple connections and map consumers to them.

```
return [
    'connections' => [
        'default' => [
            'host' => env('RABBITMQ_HOST', '127.0.0.1'),
            'port' => env('RABBITMQ_PORT', 5672),
            'username' => env('RABBITMQ_USER', 'guest'),
            'password' => env('RABBITMQ_PASS', 'guest'),
            'vhost' => env('RABBITMQ_VHOST', '/'),
        ],
        'another' => [
            'host' => env('RABBITMQ_ANOTHER_HOST', '127.0.0.1'),
            'port' => env('RABBITMQ_ANOTHER_PORT', 5672),
            'username' => env('RABBITMQ_ANOTHER_USER', 'guest'),
            'password' => env('RABBITMQ_ANOTHER_PASS', 'guest'),
            'vhost' => env('RABBITMQ_ANOTHER_VHOST', '/'),
        ],
    ],

    'consumers' => [
        [
            'connection' => 'default',
            'queue' => 'UserCreatedQueue',
            'handler' => \App\RabbitMQ\Consumers\UserCreatedConsumer::class,
            // 'noAck' => false,   // default: broker waits for explicit ack
            // 'exclusive' => false,
            // 'nowait' => false,
            // 'consumerTag' => 'my_consumer_tag',
            // 'arguments' => [ 'x-retries' => 3 ],
            // 'ticket' => 42,
        ],

        // Example mapped to another connection
        [
            'connection' => 'another',
            'queue' => 'EmailQueue',
            'handler' => \App\RabbitMQ\Consumers\EmailConsumer::class,
            'noAck' => true,     // auto-ack at broker (handler won't need to ack)
        ],
    ],
];
```

Environment variables you may set in `.env`:

```
RABBITMQ_HOST=127.0.0.1
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASS=guest
RABBITMQ_VHOST=/
```

---

Generating Consumers
--------------------

[](#generating-consumers)

Generate a consumer class (you can pass nested paths using `/`):

```
php artisan rabbitmq:make-consumer UserCreatedConsumer
# or
php artisan rabbitmq:make-consumer Sub/Path/EmailConsumer
```

Generated file will live under `app/RabbitMQ/Consumers/...` with namespace `App\RabbitMQ\Consumers`.

Example handler with manual ack/nack control:

```
