💡 이 섹션은 읽고 넘어갑시다.
대부분의 회사에서 이미 만들어진 시스템은 스프링 부트 2를 사용하고 있을 가능성이 큽니다.
따라서 Zuul을 알고 가는 것이 좋을것 같습니다. (스프링 부트 3에서는 Spring Cloud 사용)
코드 보다는 기능에 집중하세요.
”클라우드 게이트웨이와 같은 기능을 제공하고 있구나” 라고 생각하고 넘어가면 됩니다.
build.gradle 파일 예시:
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-zuul'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}
@SpringBootApplication
@EnableZuulProxy
public class ApiGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ApiGatewayApplication.class, args);
}
}
application.yml 파일에서 라우팅 설정을 정의할 수 있습니다.
zuul:
routes:
users-service:
path: /users/**
serviceId: users-service
orders-service:
path: /orders/**
serviceId: orders-service
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
@Component
public class PreFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() throws ZuulException {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
// 요청 로깅
System.out.println(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));
return null;
}
}
- 윈도우
- CMD 창을 열고 아래의 명령어를 입력합니다. 뒤에 숫자는 정지시키고자 하는 포트입니다.
```bash
netstat -a -o | findstr 19093
```
- 그러면 아래와 같이 해당 포트의 프로세스 리스트가 나옵니다. 리스트의 마지막이 PID 이며 이 아이드를 통해 포트를 사용하는 프로세스를 정지 할 수 있습니다.
```bash
TCP 0.0.0.0:19093 0.0.0.0:0 LISTENING 2340
```
- 명령어를 통해 프로세스를 정지합니다. 정지 명령어의 숫자는 위에서 조회한 PID 입니다.
```bash
taskkill /f /pid 2340
```
- 맥
- 아래의 명령어를 통해 포트의 PID를 조회합니다. 숫자는 포트입니다.
```bash
lsof -i :19090
```
- 이렇게 PID를 확인할 수 있습니다.
```bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 38887 asdf 129u IPv6 0xaa045ca3ee30eb9b 0t0 TCP localhost:19090->localhost:54148 (ESTABLISHED)
java 38887 asdf 130u IPv6 0xaa045ca3e381eb9b 0t0 TCP *:19090 (LISTEN)
java 38887 asdf 134u IPv6 0xaa045ca3edcee39b 0t0 TCP localhost:19090->localhost:54149 (ESTABLISHED)
java 38887 asdf 135u IPv6 0xaa045ca3edb5c39b 0t0 TCP localhost:19090->localhost:54152 (ESTABLISHED)
java 38887 asdf 138u IPv6 0xaa045ca3edcd3b9b 0t0 TCP localhost:19090->localhost:54156 (ESTABLISHED)
java 38887 asdf 139u IPv6 0xaa045ca3edcd2b9b 0t0 TCP localhost:19090->localhost:54157 (ESTABLISHED)
```
- 조회된 PID를 통해 포트의 프로세스를 종료합니다. 숫자는 조회된 프로세스입니다.
```bash
kill -9 38887
```