spring-cloud / spring-cloud/spring-cloud-gateway
Make RedisRateLimiter extensible?
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 4.9k
- Forks
- 3.5k
- Avg merge
- 20h 57m
- Merged PRs (30d)
- 8
Description
Hey guys!
In order to be able to rate limit per user API key (versus basing the limit on the route) I had to extend RedisRateLimiter to make isAllowed(String routeId, String apiKey) calculate the limits based up on the route and the apiKey. Please see the full thing here: https://stackoverflow.com/questions/50988095/rate-limiting-based-on-user-plan-in-spring-cloud-gateway
As you see it is somewhat hackish there because there's no good way to extend RedisRateLimiter - see I had to decorate it, copy some private/default scoped methods over as well as hack the @Primary annotation so it gets into the bean factory well.
Do you think RedisRateLimiter would be re-architected to be easier to extend?
Thanks!
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with RedisRateLimiter and the isAllowed(String routeId, String apiKey) entry point described in the issue. Review the referenced Stack Overflow example to understand the current decoration workaround; done means RedisRateLimiter can be extended for API-key-based limits without copying private or default-scoped methods or relying on an @Primary hack.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, redis, spring, spring-boot
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100