MavenŞöyle yaparız
Şu satırı dahil ederiz. @RateLimiter anotasyonu kullanılır
<dependency><groupId>io.github.resilience4j</groupId><artifactId>resilience4j-spring-boot2</artifactId><version>1.7.1</version></dependency>
Örnek
Elimizde şöyle bir dosya olsun
resilience4j.ratelimiter.instances.default.limit-for-period=100resilience4j.ratelimiter.instances.default.limit-refresh-period=5s
Şöyle yaparız
@GetMapping("ms1")@RateLimiter(name="default")public String callingMS2() {return "MS1 can handle only 100 requests per 5 seconds");}
Örnek
Elimizde şöyle bir dosya olsun. Burada stockService için 5 saniyede bir istek kabul edileceği belirtiliyor.
resilience4j.ratelimiter:instances:stockService:limitForPeriod: 1limitRefreshPeriod: 5stimeoutDuration: 0s
Açıklaması şöyle
- limitRereshPeriod is the interval — in our case it is 5 seconds- limitForPeriod is number of requests to make every 5 seconds. In our case, it should be just 1. We want to make only one call every 5 second. All other requests should not be allowed within the 5 second window- timeoutDuration — additional requests within the 5 seconds should be timedout immediately.
import io.github.resilience4j.ratelimiter.annotation.RateLimiter; @Servicepublic class StockService {@RateLimiter(name="stockService", fallbackMethod = "getFallbackStocks")public List<StockPrice> getStocks() {...}public List<StockPrice> getFallbackStocks(Exception e) {return ...;}}
Hiç yorum yok:
Yorum Gönder