GithubHelp home page GithubHelp logo

book-microservices-v2 / chapter07 Goto Github PK

View Code? Open in Web Editor NEW
8.0 2.0 11.0 591 KB

Learn Microservices with Spring Boot (2nd edition) - Chapter 7

Home Page: https://tpd.io/book-extra

HTML 2.17% CSS 0.46% JavaScript 21.05% Java 76.31%
microservices event-driven-architecture rabbitmq spring-boot pubsub java microservices-example

chapter07's Introduction

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.

Logical View - Chapter 7

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

Requirements:

  • JDK 14+
  • Node.js v13.10+
  • npm 6.13.7+
  • RabbitMQ 3.8.3+
  1. You need a RabbitMQ server running. Run the server according to the instructions for your OS, for example:
    $ rabbitmq-server
  2. To start the Multiplication microservice, you can use the command line with the included Maven wrapper:
    multiplication$ ./mvnw spring-boot:run
  3. To start the Gamification microservice, you do the same from its corresponding folder:
    gamification ./mvnw spring-boot:run
  4. The React application can be started with npm. First, you need to download the dependencies with:
    challenges-frontend$ npm install
  5. 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.

Application - Screenshot

Questions

  • 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.

Purchase

You can buy the book online from these stores:

Source code by chapter (all repositories are available on Github)

Extra chapters:

chapter07's People

Contributors

mechero avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

chapter07's Issues

Wrong image reference

On page 277 there is a paragraph that goes:

Follow the same steps as in previous scenarios to boot up one instance of each
microservice, the UI, and the RabbitMQ service. Then, run the commands in Listing 7-21
in two separate terminals to have the same setup as shown in the previous Figure 7-23,
with two replicas of each microservice. Keep in mind that you need to execute them from
each corresponding microservice’s home folder.

The "same setup as shown in the previous Figure 7-23" part is wrong. It should be pointing to Figure 7-24.

GameServiceImpl

Hi, i'm reading your book and changed the version of spring to 3.1.6 with Java 17, I had this issues
'map(java.util.function.Function<? super com.killer.gamification.domain.BadgeType,? extends R>)' in 'java.util.stream.Stream' cannot be applied to '()' in the processForBadges method. Can you give me some advice?

Set alreadyGotBadges;
alreadyGotBadges = badgeRepository
.findByUserIdOrderByBadgeTimestampDesc(solvedChallenge.getUserId())
.stream()
.map(BadgeCard::getBadgeType)
.collect(Collectors.toSet());
Captura desde 2023-12-26 23-07-01

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.