Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • [product] ProductController의 throw Exception을 Thread.sleep(2000)로 수정
    • Code Block
      @RestController
      @RequestMapping("/products")
      public class ProductController {
      
          @GetMapping(path = "{productId}")
          public String getProductInfo(@PathVariable String productId) {
              try {
                  Thread.sleep(2000);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
      
              return "[product id = " + productId + " at " + System.currentTimeMillis() + "]";
              //throw new RuntimeException("I/O Exception");
          }
      }
  • [display] application.yml 수정하여 Hystrix Timeout 시간 조정하기
    • Code Block
      hystrix:
        command:
          default:    # command key. use 'default' for global setting.
            execution:
              isolation:
                thread:
                  timeoutInMilliseconds: 3000
  • Display → Product 호출 하기
  • 정리
    • Info
      iconfalse
      • Hystrix를 통해 실행 되는 모든 메소드는 정해진 응답시간 내에 반환 되어야 한다.
      • 그렇지 못한 경우, Exception이 발생하며, Fallback이 정의된 경우 수행된다.
      • Timeout 시간은 조절할 수 있다. (Circuit 별로 세부 수정 가능하며 뒷 부분에 설명)
      • 언제 유용한가 ?
        • 항상 !!
        • 모든 외부 연동은 최대 응답 시간을 가정할 수 있어야 한다.
        • 여러 연동을 사용하는 경우 최대 응답시간을 직접 Control하는 것은 불가능하다 (다양한 timeout, 다양한 지연등..)


04. Hystrix Circuit Open 테스트

...