bucket4j spring boot starter
This commit is contained in:
parent
4e45b8f44e
commit
1b5a64c4a4
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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