Learn Microservices with Spring Boot - Chapter 7
This repository contains the source code of the practical use case described in the book Learn Microservices with Spring Boot (2nd Edition).
The book follows a pragmatic approach to building a Microservice Architecture. You start with a small monolith and examine the pros and cons that come with a move to microservices.
Chapter 7 version
In Chapter 7, you learn how to achieve loose coupling with an Event-Driven Architecture using a RabbitMQ message broker. Besides, you go through the extra advantages like the ability to implement different messaging patterns, load balancing, and resilience.
The main concepts included in this chapter are:
- Event-Driven Architectures: Pros and Cons
- Embracing Eventual Consistency, all the way up to the UI
- RabbitMQ main concepts, messaging patterns, and practical implementation
- Refactoring the microservices towards an Event-Driven strategy
- Resilience with persistent messages
As usual, the book uses this practical implementation to teach you why introducing a message broker between our microservices is a good idea. You learn the patterns before the tools, so you can use your knowledge to build similar architectures using a different technology stack - e.g. Kafka.
Check the Book's Web Page to see the complete list of chapters.
Running the app
- JDK 14+
- Node.js v13.10+
- npm 6.13.7+
- RabbitMQ 3.8.3+
- You need a RabbitMQ server running. Run the server according to the instructions for your OS, for example:
- To start the Multiplication microservice, you can use the command line with the included Maven wrapper:
multiplication$ ./mvnw spring-boot:run
- To start the Gamification microservice, you do the same from its corresponding folder:
gamification ./mvnw spring-boot:run
- The React application can be started with npm. First, you need to download the dependencies with:
challenges-frontend$ npm install
- Then, you start the server with:
challenges-frontend$ npm start
Once the backend and the fronted are started, you can navigate to
http://localhost:3000 in your browser and start resolving multiplication challenges. This time, you'll see the Leaderboard.
- Do you have questions about how to make this application work?
- Did you get the book and have questions about any concept explained within this chapter?
- Have you found issues using updated dependencies?
Don't hesitate to create an issue in this repository and post your question/problem there.
About the book
Are you interested in building a microservice architecture from scratch? You'll face all the challenges of designing and implementing a distributed system one by one, and will be able to evaluate if it's the best choice for your project.
Visit https://tpd.io/book-extra for all the details about the book.
You can buy the book online from these stores:
Source code by chapter (all repositories are available on Github)
- Chapter 3. A professional 3-tier 3-layer Spring Boot app
- Chapter 4. Building a basic frontend in React (backender-friendly)
- Chapter 5. The Data Layer Concepts and Spring Data JPA
- Chapter 6. Starting with Microservices - Synchronous
- Chapter 7. Event-Driven Architectures - Making our system asynchronous
- Chapter 8 (I). The Gateway Pattern in Microservice Architectures (Spring Cloud Gateway)
- Chapter 8 (II). Service Discovery and Load Balancing for Spring Boot Microservices (Consul / Spring Cloud Load Balancer)
- Chapter 8 (III). Centralized Configuration with Consul KV
- Chapter 8 (IV). Centralized Logs, Distributed Tracing, and Containerization with Docker (Buildpacks) and Docker Compose