Spring Cloud Gateway - 프로젝트 생성

CHEESE·2022년 8월 28일
1

Spring Cloud + MSA

목록 보기
7/13
post-thumbnail

zuul과 다른 점 : 비동기 처리가 가능하여 최신 트렌드에 맞는 Function Programming 가능

프로젝트 생성

Spring Cloud Routing 내 Gateway 디펜던시를 꼭 추가해준다.

route 설정 추가

properties 파일로 설정하는 방법과 Java 코드로 설정하는 방법 총 2가지가 있다.

1. application.yml

server:
  port: 8000

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:8761/eureka

spring:
  application:
    name: apigateway-service
  cloud:
    gateway:
      routes:
        - id: first-service
          uri: http://localhost:8081/
          predicates:
            - Path=/first-service/**
        - id: second-service
          uri: http://localhost:8082/
          predicates:
            - Path=/second-service/**

spring.cloud.gateway.routes

  • id : 고유한 이름
  • uri : 어디로 포워딩할 것인지
  • predicates : 클라이언트의 조건(만족시 uri 항목으로 포워딩)

http://localhost:8000/first-service/welcome 으로 접근하면 내부적으로
http://localhost:8081/first-service/welcome 으로 포워딩한다.
(zuul에서는 http://localhost:8081/welcome 으로 포워딩된다는 점에서 다르다.)

2. Java Code

package com.example.apigatewayservice.config;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FilterConfig {
    @Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder){
        return builder.routes()
                .route(r -> r.path("/first-service/**")
                        .uri("http://localhost:8081"))
                .route(r -> r.path("/second-service/**")
                        .uri("http://localhost:8081"))
                .build();
    }
}

기동


다른 프로젝트에서는 이렇게 Tomcat 서버가 작동했다면

여기에서는 Netty라는 비동기 방식의 서버가 작동한다는 로그를 확인할 수 있다.

0개의 댓글