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.


  • 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

Event scenario


  1. Install RabbitMQ (if it's installed on another host than localhost then you need to change the connection properties in
  2. start a couple instances of the demo application in subscriber mode, for example:
    • ./gradlew bootrun -Dsubscriber.queue=service1Queue -Dsubscriber.routingKey=customer.*
    • ./gradlew bootrun -Dsubscriber.queue=service2Queue -Dsubscriber.routingKey=.*created
    • ./gradlew bootrun -Dsubscriber.queue=service3Queue -Dsubscriber.routingKey=*.*
  3. start a single instance of the demo application in publisher mode:
    • ./gradlew bootrun
  4. check the log output of the publisher and the subscribers to see which events are produced and which events are consumed by each subscriber