Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Spring boot microservice example with Eureka Server + Eureka Client + Spring Cloud API Gateway + OAuth2.0 + Circuit Breaker + Resilience4J + FeignClient + RestTemplate

Notifications You must be signed in to change notification settings

subhashlamba/spring-boot-microservice-example

Repository files navigation

Spring boot microservice example Build Status

Spring boot microservice example with Eureka Server + Eureka Client + Spring Cloud API Gateway + OAuth2.0 + Circuit Breaker + Resilience4J + FeignClient + RestTemplate

  • Eureka Server : Eureka service registry
  • Spring Cloud API Gateway: API Gateway which is responsible to route the request to specific microservice
  • Spring OAuth2.0: Authentication service and responsible to secure the end points.
    • Eureka Client
    • Generate OAuth token
    • Validate the OAuth token
  • User Service: User microservice with a basic feature
    • Eureka Client
    • OAuth2.0 Client
    • Supports RestTemplate Client
    • Supports Resilience4J circuit breaker
    • Use of Resilience4J circuit breaker with RestTemplate
    • Swagger Document - http://localhost:8181/swagger-ui/index.html
  • Order Service: Order microservice with a basic feature
  • Notification Service: Notification microservice with basic feature

Checkout repository

> git clone https://github.com/subhashlamba/spring-microservices.git
> cd spring-boot-microservices-example

Step 1: Start all services

1.1 For windows:

mvn clean install -f .\spring-boot-cloud-eureka-server\pom.xml
mvn clean install -f .\spring-boot-cloud-zuul-routing\pom.xml
mvn clean install -f .\spring-boot-cloud-eureka-user-service\pom.xml
mvn clean install -f .\spring-boot-cloud-eureka-order-service\pom.xml
mvn clean install -f .\spring-boot-cloud-eureka-notification-service\pom.xml
mvn clean install -f .\spring-boot-cloud-authentication-service\pom.xml
START "Server" java -jar spring-boot-cloud-eureka-server/target/eureka-server.jar 
START "API Gateway" java -jar spring-boot-cloud-zuul-routing/target/zuul-api-gateway.jar --server.port=8080 
START "User Service" java -jar spring-boot-cloud-eureka-user-service/target/user-service.jar --server.port=8181
START "Order Service" java -jar spring-boot-cloud-eureka-order-service/target/order-service.jar --server.port=8282
START "Notification Service" java -jar spring-boot-cloud-eureka-notification-service/target/notification-service.jar --server.port=8383
START "Authentication Service" java -jar spring-boot-cloud-authentication-service/target/authentication-service.jar --server.port=8484

Step 2: Check Eureka Server

Eureka server is running 8761 port, Now let's open it. Where we can check following instances are running:

  • 1 instance of API Gateway service
  • 1 instance of User service
  • 1 instance of Order service
  • 1 instance of Authentication service
  • 1 instance of Notification service

Eureka server : http://localhost:8761/

eureka server

Step 3: Configure Zipkin Server (Optional)

1. Download the [https://zipkin.io/pages/quickstart] Download zipkin
2. Start zipkin using following command:
java -jar zipkin-server-2.23.2-exec.jar
3. Open zipkin server : [http://localhost:9411/](http://localhost:9411/)

Zipkin-Server

Step 4: Generate OAuth2.0 token

4.1 Using curl

curl -X POST \
 http://localhost:8080/oauth/token \
 -H 'authorization: Basic amF2YWRldmVsb3BlcnpvbmU6c2VjcmV0' \
 -H 'cache-control: no-cache' \
 -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
 -H 'postman-token: d2629b30-a7cf-fa72-df64-d71118afb549' \
 -F grant_type=password \
 -F username=zone1 \
 -F password=mypassword

4.2 Using swagger

In the swagger UI, There is a "Autorize" button on the top, click on it it will open the following popup:

eureka server

Use the following information

Username: zone1
Password: mypassword
ClientId: javadeveloperzone
Secret: secret

Output

{
 "access_token": "imdUX2_t_WQLSTUlaLBTjVyHUTg",
 "token_type": "bearer",
 "refresh_token": "zLufOQtLQO1u-8JP7KN64Dsc3wc",
 "expires_in": 522,
 "scope": "read write"
}

Step 5: Create user using user microservice

5.1 Using curl

curl -X POST \
 http://localhost:8080/user/ \
 -H 'authorization: Bearer imdUX2_t_WQLSTUlaLBTjVyHUTg' \
 -H 'cache-control: no-cache' \
 -H 'content-type: application/json' \
 -H 'postman-token: d73bb63f-969c-4081-1dee-77fa2b0f1f5a' \
 -d '{"firstName":"subhash", "lastName": "Lamba"}'
 

5.2 Using Swagger UI

eureka server

Step 6: Create order using order microservice

6.1 Using curl

curl -X POST \
 http://localhost:8080/order/ \
 -H 'authorization: Bearer DF977lxKiBzdWKTkZsE7XevqK40' \
 -H 'cache-control: no-cache' \
 -H 'content-type: application/json' \
 -H 'postman-token: 2256b83e-30dc-3b8e-26f0-8d13c0dcfd44' \
 -d '{"userId":1, "orderDate": "2021-01-01"}'

6.2 Using Swagger UI

eureka server

Step 7: Get user and order using user microservice

7.1 Using curl

curl -X GET \
 http://localhost:8080/user/1 \
 -H 'authorization: Bearer DF977lxKiBzdWKTkZsE7XevqK40' \
 -H 'cache-control: no-cache' \
 -H 'content-type: application/json' \
 -H 'postman-token: 5163fb23-f54f-c793-9faa-e9df54eab9d5' \
 -d '{"userId":1, "orderDate": "2021-01-01"}'
{
 "user": {
 "id": 1,
 "firstName": "subhash",
 "lastName": "Lamba"
 },
 "orders": [
 {
 "id": 5,
 "orderDate": "2021-01-01T00:00:00.000+00:00",
 "userId": 1
 }
 ]
}

7.1 Using Swagger UI

eureka server

About

Spring boot microservice example with Eureka Server + Eureka Client + Spring Cloud API Gateway + OAuth2.0 + Circuit Breaker + Resilience4J + FeignClient + RestTemplate

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /