RabbitMQ in Laradock
Tags: laravel, docker, messagebroker, tutorial
Published: 2020-03-30 16:33:19

Previously on the [PHP-Worker in Laradock](#), we have tried to use queue by using the `database` connection by enqueueing the jobs inside the `jobs` table and run the queue worker using `php-worker` container. Now let's try to use external service (other than our laravel app) for queue processing, they usually called `message-broker`. 

One of the best message-broker at the moment is [RabbitMQ](https://www.rabbitmq.com/) and luckily, Laradock has it. Let's try it out!

## Run the RabbitMQ container

Just at ease as usual, go inside your laradock directory by using your favorite CLI and execute this command:

```
docker-compose up -d rabbitmq
```

The above command will download the rabbitmq docker image and build it for the first time (make sure you had an internet connection). After it finished creating, you can check the container status using `docker-compose ps` here what I got:

```
           Name                          Command               State                                                     Ports
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp, 2376/tcp
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp
laradock_rabbitmq_1           docker-entrypoint.sh rabbi ...   Up      0.0.0.0:15671->15671/tcp, 0.0.0.0:15672->15672/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp
```

and when we check the resource used by the container(s) using `docker stats`, here what I got:

```
CONTAINER ID        NAME                          CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
851befcbcc87        laradock_rabbitmq_1           69.30%              88.38MiB / 3.846GiB   2.24%               245kB / 765kB       0B / 119kB          88  
e940b1ebf50c        laradock_php-fpm_1            0.00%               7.703MiB / 3.846GiB   0.20%               1.91kB / 0B         123kB / 0B          3   
bfb04cbeba8d        laradock_workspace_1          0.00%               9.16MiB / 3.846GiB    0.23%               4.31kB / 0B         7.22MB / 57.3kB     6 
f7a90b272d84        laradock_docker-in-docker_1   0.19%               20.43MiB / 3.846GiB   0.52%               2.43kB / 0B         2.55MB / 918kB      23
```

## Accessing the RabbitMQ Management (Web UI)

The rabbitmq management should be accessible at [http://localhost:15672/#/](http://localhost:15672/#/) and the default login credential is `guest` for both username and password.

Once you get in, the user interface should be like this:

<img src="https://i.ibb.co/x7wpyND/2020-03-30-23h20-02.png" alt="2020-03-30-23h20-02" border="0">

## Laravel Queue using RabbitMQ

I have an idea to create another post series about laravel packages. So for the rabbitmq demo in Laravel, I will separate it [here](https://dev.to/dendihandian/rabbitmq-queue-driver-for-laravel-3ng4).

Have fun experimenting RabbitMQ in laradock!