marcosbarbero / spring-cloud-zuul-ratelimit

Rate limit auto-configure for Spring Cloud Netflix Zuul

Home Page:https://blog.marcosbarbero.com/spring-cloud-netflix-zuul-rate-limit/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Working example using bucket4j

jandresmartinez opened this issue · comments

After reading #447, I have some doubts about how to use bucke4j hazelcast or jcache, could it be possible to have one working example?

thanks!

Hello @jandresmartinez, thanks for getting in touch, we will get back to you asap! If you have issues in the 1.x.x.RELEASE line we recommend you to update to the latest version, unfortunately this line is not supported anymore.

Hi @jandresmartinez, you can find working examples for every implementation in the tests

Thanks a lot @marcosbarbero!!

I tried to run a simple dummy spring boot application:

import com.hazelcast.core.Hazelcast;
import com.hazelcast.map.IMap;
import io.github.bucket4j.grid.GridBucketState;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;

@EnableZuulProxy
@SpringCloudApplication
public class SpringZuulRateLimitingApplication {

    public static void main(String... args) {
        SpringApplication.run(SpringZuulRateLimitingApplication.class, args);
    }

    @Bean
    @Qualifier("RateLimit")
    public IMap<String, GridBucketState> map() {
        return Hazelcast.newHazelcastInstance().getMap("rateLimit");
    }
}

but i'm having the following error:

Description:

Parameter 0 of method rateLimiterPreFilter in com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.RateLimitAutoConfiguration required a bean of type 'com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.RateLimiter' that could not be found.

The following candidates were found but could not be injected:
	- Bean method 'bucket4jHazelcastRateLimiter' in 'RateLimitAutoConfiguration.Bucket4jHazelcastConfiguration' not loaded because @ConditionalOnClass did not find required class 'com.hazelcast.core.IMap'

Could you please tell me the versions of Spring Boot, Spring Cloud, and the Rate Limit?

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot</artifactId>
        <version>2.1.18.RELEASE</version>
      </dependency>

.....


 <spring-cloud.version>Greenwich.SR6</spring-cloud.version>

.....


<dependency>
      <groupId>com.marcosbarbero.cloud</groupId>
      <artifactId>spring-cloud-zuul-ratelimit</artifactId>
      <version>2.4.0.RELEASE</version>
      <scope>compile</scope>
    </dependency>

Thanks, at this moment I don't know what's going wrong.
Can you please share the project in a public repo?

Thanks a lot @marcosbarbero Finally there was a dependency problem between spring-jpa and hazelcast.

Thanks for the heads up @jandresmartinez ! I'll close this issue, if you find any problem in the future you can file a new one.