β κΉνλΈ μμ€μ½λ
β Udemy κ°μ
β μμ‘΄μ± μ€μ
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
β @EnableZuulProxy μ΄λ Έν μ΄μ μΆκ°
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class ZuulServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulServiceApplication.class, args);
}
}
β λΆνΈμ€νΈλν(bootstrap.yml)
spring:
application:
name: zuul-service
profiles:
active: default
cloud:
config:
uri: http://localhost:8888
β νλ‘νΌν° μ€μ (μ격 μ μ₯μ λ΄μ zuul-service.yml)
server:
port: 5555
eureka:
instance:
preferIpAddress: true
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:8010/eureka/
β νμ€νΈλ¦μ€μ 리본 νμμμ μ€μ
Β Β Β Β μ£ΌμΈμ λ·νλ¦μ€μ νμ€νΈλ¦μ€μ 리본 λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄ μ€λ μνλλ μλΉμ€ νΈμΆμ΄ μλΉμ€ κ²μ΄νΈμ¨μ΄μ μ±λ₯μ μν₯μ λ―ΈμΉμ§ μλλ‘ ν©λλ€. κΈ°λ³Έμ μ μ£ΌμΈμ μμ²μ μ²λ¦¬νλ λ° 1μ΄ μ΄μ 걸리λ λͺ¨λ νΈμΆμ μ’ λ£νκ³ HTTP 500 μλ¬λ₯Ό λ°νν©λλ€(μ΄κ²μ νμ€νΈλ¦μ€ κΈ°λ³Έ λμμ λλ€).
μ£ΌμΈλ‘ μ€ν μ€μΈ λͺ¨λ μλΉμ€μ λν΄ νμ€νΈλ¦μ€ νμμμμ μ€μ νλ €λ©΄ hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
νλ‘νΌν°λ₯Ό μ¬μ©νλ©΄ λ©λλ€. νΉμ μλΉμ€μμλ§ λ³λμ νμ€νΈλ¦μ€ νμμμμ μ€μ νλ €λ©΄ default
λΆλΆμ ν΄λΉ μλΉμ€μ IDλ‘ λ°κΎΈλ©΄ λ©λλ€.
λ·νλ¦μ€μ 리본μ 5μ΄ μ΄μ μνλλ νΈμΆμ νμμμν©λλ€. 5μ΄ μ΄μ μνλλ νΈμΆμ λν΄μΈλ μ½λ μ¬κ²ν κ° κ°λ ₯ν κΆμ₯λμ§λ§ ribbon.ReadTimeout
νΉμ {service.name}.ribbon.ReadTimeout
νλ‘νΌν°λ₯Ό μ¬μ©ν΄ 리본μ νμμμμ μ¬μ μ ν μ μμ΅λλ€.
Note: 5μ΄ μ΄μμ νμμμ ꡬμ±μ νμ€νΈλ¦μ€μ 리본 λͺ¨λμ λν΄μ μ€μ μ ν΄μ€μΌ ν©λλ€.
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 7000
ribbon:
ReadTimeout: 7000