Code Monkey home page Code Monkey logo

microservices-demo's Introduction

microservices-demo

Demo application to go with my Microservices Blog on the spring.io website. WARNING: Only maven build has been updated. Gradle build still to be done.

Demo System Schematic

Clone it and either load into your favorite IDE or use maven/gradle directly.

Note for gradle users: to make the intructions below build-tool independent, the gradle build copies its artifacts from build/libs to target.

Versions

Current version (June 2018) v2.0.0 corresponds to Spring Boot 2 and Finchly release train.

WARNING: Only maven build has been updated. Gradle build still to be done.

Previous versions have been tagged and can be accessed using the Branch button above or using git checkout <version> - for example git checkout v1.2.0.

Tagged versions are:

  • v2.0.0 - Spring Boot 2.0 and Spring Cloud release-train Finchley
  • v1.2.0 corresponds to Spring Boot 1.5 and Spring Cloud release-train Edgeware
  • v1.1.0 corresponds to Spring Cloud release-train Brixton
  • v1.0.0 corresponds to Spring Cloud release-train Angel.SR6

Using an IDE

You can run the system in your IDE by running the three server classes in order: RegistrationService, AccountsService and WebService. Each is a Spring Boot application using embedded Tomcat. In Spring Tool Suite use Run As ... Spring Boot App otherwise just run each as a Java application - each has a static main() entry point.

As discussed in the Blog, open the Eureka dashboard http://localhost:1111 in your browser to see that the ACCOUNTS-SERVICE and WEB-SERVICE applications have registered. Next open the Demo Home Page http://localhost:3333 in and click one of the demo links.

The localhost:3333 web-site is being handled by a Spring MVC Controller in the WebService application, but you should also see logging output from AccountsService showing requests for Account data.

Command Line

You may find it easier to view the different applications by running them from a command line since you can place the three windows side-by-side and watch their log output

For convenience we are building a 'fat' executble jar whose start-class (main method entry-point) is defined to be in the class io.pivotal.microservices.services.Main. This application expects a single command-line argument that tells it to run as any of our three servers.

java -jar target/microservices-demo-2.0.0.RELEASE.jar registration|accounts|web

Priocedure

To run the microservices system from the command-line, open three CMD windows (Windows) or three Terminal windows (MacOS, Linux) and arrange so you can view them conveniently.

  1. In each window, change to the directory where you cloned the demo.
  2. In the first window, build the application using either mvn clean package or gradle clean assemble. Either way the generated file will be target/microservices-demo-2.0.0.RELEASE.jar (even if you used gradle).
  3. In the same window run: java -jar target/microservices-demo-2.0.0.RELEASE.jar registration
  4. Switch to the second window and run: java -jar target/microservices-demo-2.0.0.RELEASE.jar accounts
  5. In the third window run: java -jar target/microservices-demo-2.0.0.RELEASE.jar web
  6. In your favorite browser open the same two links: http://localhost:1111 and http://localhost:3333

You should see servers being registered in the log output of the first (registration) window. As you interact wiht the Web application, you should logging in the both the second and third windows.

For a list of valid accounts refer to the data.sql that is used by the Account Service to set them up.

  1. In a new window, run up a second account-server using HTTP port 2223:
    • java -jar target/microservices-demo-2.0.0.RELEASE.jar accounts 2223
  2. Allow it to register itself
  3. Kill the first account-server and see the web-server switch to using the new account-server - no loss of service.

microservices-demo's People

Contributors

paulc4 avatar shahid21st avatar kasunsk avatar

Watchers

James Cloos avatar

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.