How to use RabbitMQ for laravel

  • Install RabbitMQ: First, you need to install RabbitMQ on your server or local development environment. You can find installation instructions for your specific operating system on the RabbitMQ website ( Make sure RabbitMQ is up and running before proceeding.

  • Install the RabbitMQ PHP extension: Laravel requires the RabbitMQ PHP extension to work with RabbitMQ. You can install it using Composer by running the following command in your Laravel project directory:

          composer require php-amqplib/php-amqplib

          This will download and install the necessary package.

  • Configure Laravel for RabbitMQ: Open the .env file in your Laravel project and add the following configuration options:






          Replace the placeholders with the actual RabbitMQ host, port, username, password, and virtual host.

  • Create a RabbitMQ service provider (optional): To keep your code organized, you can create a custom service provider for RabbitMQ. Run the following command in your Laravel project directory:

          php artisan make:provider RabbitMQServiceProvider

         This will generate a new service provider file. Open the file and add the following code to the register method:

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Channel\AMQPChannel;
use Illuminate\Support\ServiceProvider;

class RabbitMQServiceProvider extends ServiceProvider
    public function register()
        $this->app->singleton(AMQPStreamConnection::class, function () {
            return new AMQPStreamConnection(

        $this->app->singleton(AMQPChannel::class, function ($app) {
            return $app[AMQPStreamConnection::class]->channel();

          Save the file and register the service provider in the config/app.php file by adding the following line to the providers array:


  • Publish the RabbitMQ configuration file (optional): If you want to customize the RabbitMQ configuration, you can publish the configuration file to your Laravel project. Run the following command:

          php artisan vendor:publish --provider="VladimirYuldashev\LaravelQueueRabbitMQ\LaravelQueueRabbitMQServiceProvider" --tag=config

         This will create a rabbitmq.php file in your config directory, allowing you to modify the default configuration options.

  • Using RabbitMQ in Laravel: With the setup complete, you can now start using RabbitMQ in your Laravel application. To publish a message to a RabbitMQ exchange, you can use Laravel's built-in dispatch function:

          dispatch(new YourJob($data))->onQueue('rabbitmq');

         Replace YourJob with your own job class that extends Illuminate\Contracts\Queue\ShouldQueue. Make sure to define the rabbitmq queue in your config/queue.php file.

         To consume messages from RabbitMQ, you can use Laravel's `queue:work


3   0