Skip to main content

Implementing Spring GateWay for Microservices using spring boot.

In previous post MicroServices - GateWay Pattern we discussed about gateway pattern. Lets implement it using Spring Boot & Spring gateway. Here we will create a basic Order Management system with following services
  • Order Service 
  • Customer Service 
  • Kitchen Service

In this tutorial main motive is to demonstrate how to implement gateway for our services. Gateway is interface that will route our request to required services. If you want to know more about Gateway then feel free to visit MicroServices - GateWay Pattern
Gateway Pattern
As we know that each spring boot application is a microservice there fore for creating our services we will be using Spring Boot.


Note: You can get entire code at this link

Steps to be followed

  1. Create Spring Boot Application for OrderService.
  2. Create Spring Boot Application for CustomerService.
  3. Create Spring Boot Application for Gateway.

Step 1: Create a Spring Boot Application for OrderService

Our orderservice project structure will be as follows.

Generate a spring boot application named orderservice packaged as war with following maven dependencies.

In project we will have our controller with "/order/listorder"


Create a application.properties


Create a Order.java

Now run the application as spring boot application. you will get the following result  at 8081 port.


Step 2: Create Spring Boot Application for CustomerService

Our customerservice project structure will look something like this.
Generate a spring boot application named customerservice packaged as war with following maven dependencies.

In project we will have our controller with "/customer/getcustomer"
Create a application.properties



Create a Customer.java

Now run the application as spring boot application. you will get the following result  at 8082 port.

Step 3: Create Spring Boot Application for Gateway

Create a omgateway Spring Boot application packaged as JAR . With following dependencies

Note : Spring Cloud Gateway requires the Netty runtime provided by Spring Boot and Spring Webflux. It does not work in a traditional Servlet Container or built as a WAR.

Create a application.properties 

Create a application.yml

Here we have in this application.yml  "routes" is the array of the urls you want to give for routing and "Path" will match the incoming request and proxy it to given url in "uri". Like in our case any uri with "/order/**" i.e path starting with "/order"  will be redirected to "http://localhost:8081/".

Now run the omgateway application as springboot application on port :8000
and try to visit "localhost:/8000/order/listorder" you should be getting the result of "localhost:8081/order/listorder" And visit "localhost:/8000/customer/getcustomer" you would get result which you get by visiting "localhost:/8082/customer/getcustomer"

This is because your gateway is routing the request to 8082 and 8081 respectively.



Note: You can get entire code at this link

Comments

Popular posts from this blog

Routing in Angular 7

What you will learn after reading this post.What is Routing in Angular 7.Basic routing of component in Angular 7.Active link in routing in Angular 7.Wild card routing in Angular 7.Child routing in Angular 7.1. What is Routing in Angular 7? Whenever in normal HTML web page we click on a link we are navigated to specific page given in that link. When we are navigated then entire view of the application is reloaded again which cost resources and this type of application is not single page application. 

Decompose Monolithic Application To Microservices

How To Decompose Application into Microservices. After reading the previous two posts you all must be excited to implement microservice architecture to your application and that's good you should be ready to implement something new that might boost the application performance,  maintenance, scalability and will make your application future proof. But have you ever thought how will you be breaking your application into micro application i.e microservices. Think about it for some minute exercise your brain for some time before reading the below tutorial.

Now i am sure that you all might  have come through excellent ideas for breaking up your application in microservices. Please feel free to mention your valuable ideas in comment so that other or even me can be benefited by your ideas.

Now before breaking your application into micro-services you should consider following points.
Points to be considered before creating microservices.Your each services should be easily testable.Your a…

Feature Modules in Angular 7

Feature Module Whenever we  create angular application we go on adding components to angular application. But as our application goes on increasing it become to much problematic to maintain such application. Every feature of our application is binded under single module which we call as app module. Which is root module of our Angular 7 application. While developing angular application without modularizing its features creates several problems  Application is not easily scalable.Application is tough to maintain.Application complexity makes it hard to understand. Solution Here feature modules comes for our rescue. Feature modules help angular applications to get modularised on basis of features present in our application. As our application grows we can divide our entire application in small feature using feature module. Feature modules helps in creating boundary that separates our specific functionality or say features. Feature modules communicates with other module or root module usin…

Monolithic Application Architecture

In regular web development process what do we do? We create one war file which contains all functionality, services, modules or all use cases related to our business. In this approach of development we do not focus to make our application modularise. We may be following modularization in our code but end product is not seperated. Every services, modules are bundled up in single war and this war is deployed on server so that our business will be available for outside world which can make a request to get the required resources. This native architecture of development is called Monolithic Architecture.

Creating Simple Hello World Application with SPRING BOOT

For creating a simple running web application with spring boot we do not have to do much. We just require to follow some simple steps and we are good to go. Unlike SpringMVC framework we do not. have to take care of all heck of configuration or XML file in one go we are all set with working mvc based web application.

Now we have to follow these steps.

Generate spring boot project from this url "https://start.spring.io/" You can do the same using STS setting to.Importing the project in STS.

Lazy Loading of Feature Module in Angular 7

whenever angular application is loaded then its all modules are loaded eagerly i.e  entire application is loaded at client side on first request made to server. This cause over utilization of the resources and slows down the application at least at first time.

Just take example for E-commerce website which will have several module like order module, Feedback module, Cart Module, Product module and etc. But suppose your require to give feedback for some product you have bought and you visited to feedback page but now instead of loading just