사용자 도구

사이트 도구


java:resilience4j

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
java:resilience4j [2019/04/08 12:26]
kwon37xi 만듦
java:resilience4j [2023/09/21 16:53] (현재)
kwon37xi
줄 2: 줄 2:
   * [[https://github.com/resilience4j/resilience4j|resilience4j]]   * [[https://github.com/resilience4j/resilience4j|resilience4j]]
   * Fault tolerance library designed for functional programming   * Fault tolerance library designed for functional programming
 +  * CircuitBreaker, Bulkhead, RateLimiter, Retry, TimeLimiter, Cache 등을 제공해준다.
 +  * [[java:bucket4j|Bucket4J]]
  
 +===== 동시성 문제로 인해 private fallback method 호출 실패  =====
 +  * resilience4j 는 fallback 메소드를 ''private'' 으로 만들기를 권장하는데, [[https://github.com/resilience4j/resilience4j/blob/master/resilience4j-spring/src/main/java/io/github/resilience4j/fallback/FallbackMethod.java#L198|FallbackMethod.java]] 의 fallback method 호출시점의 동시성 문제로 인해서 private 이 호출이 안되는 문제가 발생할 수 있음.
 +    * fallback method 가 동시에 여러번 호출 될 때 첫번째 호출이 ''accessible=true''로 만들어서 실행
 +    * 두번째 호출이 시작되고 accessible 체크가 완료된 직후 시점에 첫번째 호출이 ''accessible=false'' 로 메소드 접근을 막아버림.
 +    * 두번째 호출은 private 메소드 호출권한이 없게 되어 오류 발생.
 +  * 현재로서는 그냥 무시하거나 **public**으로 fallback 메소드를 만들어야 한다.
 +  * [[https://github.com/resilience4j/resilience4j/issues/1770|UndeclaredThrowableException Caused by IllegalAccessException with fallbackMethod · Issue #1770 · resilience4j/resilience4j]]
 +  * [[https://github.com/RobWin|UndeclaredThrowableException Caused by IllegalAccessException with fallbackMethod · Issue #1770 · resilience4j/resilience4j]]
 +<code java>
 +Caused by: java.lang.IllegalAccessException: 
 +  Class io.github.resilience4j.fallback.FallbackMethod can not access a member of class 
 +  com.my.class with modifiers "private"
 +</code>
 +
 +===== bulkhead =====
 +  * [[https://resilience4j.readme.io/docs/bulkhead|Bulkhead]]
 +
 +===== 참조 =====
 +  * [[https://javatechonline.com/how-to-implement-fault-tolerance-in-microservices-using-resilience4j/|How To Implement Fault Tolerance In Microservices Using Resilience4j? | Making Java Easy To Learn]]
  
java/resilience4j.1554693967.txt.gz · 마지막으로 수정됨: 2019/04/08 12:26 저자 kwon37xi