This repo demonstates how to use Spring Boot with RabbitMQ.
It is a multi-module maven project:
-
springboot-rabbit-consumer
: consumer for messages from rabbit - once message is received, it is displayed on the console -
springboot-rabbit-producer
: produces messages for rabbit - send messages to rabbit when it receives a POST request
The producer will create:
-
Queue:
standalone-queue
on the default exchange -
Exchange:
my-exchange
, queue:my-exchange-queue
, routing key:my-routing-key
Install and run:
docker run -d --name my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management
Start the consumer service:
-
cd springboot-rabbit-consumer
-
mvn spring-boot:run
Start the producer service:
-
cd springboot-rabbit-producer
-
mvn spring-boot:run
The producer creates the following:
-
Rabbit standalone queue:
standalone-queue
-
Rabbit exchange:
my-exchange
, queue:my-exchange-queue
, routing key:my-routing-key
The above values can be modified in the consumer and producer's application.properties
file.
The above values can be changed by modifing the producer's application.properties
. If these are modified, update the values in the consumer application.properties
as well so they will listen for the new queues.
You can send messages in the following ways:
- Not specifying the exchange, routing key and queue name. This results in sending the message to the default queue:
standalone-queue
:
curl -d '{"msg": "Hello World!"}' -H 'Content-Type: application/json' -X POST http://localhost:8080/msg
- Specifying the queue name only. This reqults in sending the message to the specified queue:
curl -d '{"msg": "Hello World!"}' -H 'Content-Type: application/json' -X POST "http://localhost:8080/msg?queue=standalone-queue"
or
curl -d '{"msg": "Hello World!"}' -H 'Content-Type: application/json' -X POST "http://localhost:8080/msg?queue=my-exchange-queue"
- Specifying the exchange and the routing key. This results in sending the message to the specified exchange and routing key:
curl -d '{"msg": "Hello World!"}' -H 'Content-Type: application/json' -X POST "http://localhost:8080/msg?exchange=my-exchange&routingKey=my-routing-key"
View messages sent in the producer console.
View message received in the consumer console.
Change default Spring Boot rabbit connection setting(s) by adding the following value(s) to application.properties
:
spring.rabbitmq.host=localhost # RabbitMQ host.
spring.rabbitmq.password= # Login to authenticate against the broker.
spring.rabbitmq.port=5672 # RabbitMQ port.
spring.rabbitmq.username= # Login user to authenticate to the broker.