Event Brokering with Spring Boot and RabbitMQ
This application implements an Event mechanism usable in Microservice environments.
Companion Blog Article
The companion blog article to this repository can be found here.
Scenario
- a publisher publishes events with one of these topics
- customer.created
- customer.edited
- customer.deleted
- order.created
- order.edited
- order.deleted
- invoice.created
- invoice.edited
- invoice.deleted
- a subscriber subscribes to events of a specific topic from a queue specific to its (micro-)service
Usage
- Install RabbitMQ (if it's installed on another
host than localhost then you need to change the connection properties in
application.properties) - start a couple instances of the demo application in
subscribermode, for example:./gradlew bootrun -Dspring.profiles.active=subscriber -Dsubscriber.queue=service1Queue -Dsubscriber.routingKey=customer.*./gradlew bootrun -Dspring.profiles.active=subscriber -Dsubscriber.queue=service2Queue -Dsubscriber.routingKey=.*created./gradlew bootrun -Dspring.profiles.active=subscriber -Dsubscriber.queue=service3Queue -Dsubscriber.routingKey=*.*
- start a single instance of the demo application in
publishermode:./gradlew bootrun -Dspring.profiles.active=publisher
- check the log output of the publisher and the subscribers to see which events are produced and which events are consumed by each subscriber
