bucket4j spring boot starter
This commit is contained in:
parent
4e45b8f44e
commit
1b5a64c4a4
spring-boot-modules/spring-boot-libraries/src/main
java/com/baeldung/ratelimiting/bootstarterapp
resources/ratelimiting
21
spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/ratelimiting/bootstarterapp/Bucket4jRateLimitingApp.java
Normal file
21
spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/ratelimiting/bootstarterapp/Bucket4jRateLimitingApp.java
Normal file
@ -0,0 +1,21 @@
|
||||
package com.baeldung.ratelimiting.bootstarterapp;
|
||||
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
|
||||
@SpringBootApplication(scanBasePackages = "com.baeldung.ratelimiting", exclude = {
|
||||
DataSourceAutoConfiguration.class,
|
||||
SecurityAutoConfiguration.class,
|
||||
})
|
||||
@EnableCaching
|
||||
public class Bucket4jRateLimitingApp {
|
||||
|
||||
public static void main(String[] args) {
|
||||
new SpringApplicationBuilder(Bucket4jRateLimitingApp.class)
|
||||
.properties("spring.config.location=classpath:ratelimiting/application-bucket4j-starter.yml")
|
||||
.run(args);
|
||||
}
|
||||
}
|
41
spring-boot-modules/spring-boot-libraries/src/main/resources/ratelimiting/application-bucket4j-starter.yml
Normal file
41
spring-boot-modules/spring-boot-libraries/src/main/resources/ratelimiting/application-bucket4j-starter.yml
Normal file
@ -0,0 +1,41 @@
|
||||
server:
|
||||
port: 9001
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: bucket4j-starter-api-rate-limiting-app
|
||||
mvc:
|
||||
throw-exception-if-no-handler-found: true
|
||||
resources:
|
||||
add-mappings: false
|
||||
cache:
|
||||
cache-names:
|
||||
- rate-limiting-buckets
|
||||
caffeine:
|
||||
spec: maximumSize=100000,expireAfterAccess=3600s
|
||||
|
||||
bucket4j:
|
||||
enabled: true
|
||||
filters:
|
||||
- cache-name: rate-limiting-buckets
|
||||
url: /api/v1/area.*
|
||||
http-response-body: "{ \"status\": 429, \"error\": \"Too Many Requests\", \"message\": \"You have exhausted your API Request Quota\" }"
|
||||
rate-limits:
|
||||
- expression: "getHeader('X-api-key')"
|
||||
execute-condition: "getHeader('X-api-key').startsWith('PX001-')"
|
||||
bandwidths:
|
||||
- capacity: 100
|
||||
time: 1
|
||||
unit: hours
|
||||
- expression: "getHeader('X-api-key')"
|
||||
execute-condition: "getHeader('X-api-key').startsWith('BX001-')"
|
||||
bandwidths:
|
||||
- capacity: 40
|
||||
time: 1
|
||||
unit: hours
|
||||
- expression: "getHeader('X-api-key')"
|
||||
bandwidths:
|
||||
- capacity: 20
|
||||
time: 1
|
||||
unit: hours
|
||||
|
Loading…
x
Reference in New Issue
Block a user