@Bean public RateLimiterExports rateLimiterPrometheusCollector(RateLimiterRegistry rateLimiterRegistry){ RateLimiterExports collector = RateLimiterExports.ofRateLimiterRegistry(rateLimiterRegistry); collector.register(); return collector; } }
/** * Creates a new instance of {@link RateLimiterExports} with default metrics names prefix and * {@link Supplier} of rate limiters * * @param rateLimitersSupplier the supplier of rate limiters */ public static RateLimiterExports ofSupplier(Supplier<Iterable<RateLimiter>> rateLimitersSupplier) { return new RateLimiterExports(DEFAULT_NAME, rateLimitersSupplier); }
@Test public void testConstructors() { final RateLimiterRegistry registry = new InMemoryRateLimiterRegistry(RateLimiterConfig.ofDefaults()); RateLimiterExports.ofIterable("boo_limiters", singleton(RateLimiter.ofDefaults("foo"))); RateLimiterExports.ofRateLimiterRegistry("boo_limiters", registry); RateLimiterExports.ofSupplier("boo_limiters", () -> singleton(RateLimiter.ofDefaults("foo"))); RateLimiterExports.ofIterable(singleton(RateLimiter.ofDefaults("foo"))); RateLimiterExports.ofRateLimiterRegistry(registry); RateLimiterExports.ofSupplier(() -> singleton(RateLimiter.ofDefaults("foo"))); }
@Test public void testExportsRateLimiterMetrics() { // Given final CollectorRegistry registry = new CollectorRegistry(); final RateLimiter rateLimiter = RateLimiter.ofDefaults("foo"); RateLimiterExports.ofIterable("boo_rate_limiter", singletonList(rateLimiter)).register(registry); final Supplier<Map<String, Double>> values = () -> HashSet .of("available_permissions", "waiting_threads") .map(param -> Tuple.of(param, registry.getSampleValue( "boo_rate_limiter", new String[]{"name", "param"}, new String[]{"foo", param}))) .toMap(t -> t); // When final Map<String, Double> initialValues = values.get(); // Then assertThat(initialValues).isEqualTo(HashMap.of( "available_permissions", 50.0, "waiting_threads", 0.0 )); }
@Test(expected = NullPointerException.class) public void testConstructorWithNullSupplier() { RateLimiterExports.ofSupplier("boo_limiters", null); } }
@Test(expected = NullPointerException.class) public void testConstructorWithNullName() { RateLimiterExports.ofSupplier(null, () -> singleton(RateLimiter.ofDefaults("foo"))); }
CollectorRegistry collectorRegistry = injector.getInstance(CollectorRegistry.class); CircuitBreakerExports circuitBreakerExports = CircuitBreakerExports.ofCircuitBreakerRegistry(circuitBreakerRegistry); RateLimiterExports rateLimiterExports = RateLimiterExports.ofRateLimiterRegistry(rateLimiterRegistry); circuitBreakerExports.register(collectorRegistry); rateLimiterExports.register(collectorRegistry);
/** * Creates a new instance of {@link RateLimiterExports} with specified metrics names prefix and * {@link Iterable} of rate limiters. * * @param prefix the prefix of metrics names * @param rateLimiters the rate limiters */ public static RateLimiterExports ofIterable(String prefix, Iterable<RateLimiter> rateLimiters) { return new RateLimiterExports(prefix, rateLimiters); }
CollectorRegistry collectorRegistry = injector.getInstance(CollectorRegistry.class); CircuitBreakerExports circuitBreakerExports = CircuitBreakerExports.ofCircuitBreakerRegistry(circuitBreakerRegistry); RateLimiterExports rateLimiterExports = RateLimiterExports.ofRateLimiterRegistry(rateLimiterRegistry); circuitBreakerExports.register(collectorRegistry); rateLimiterExports.register(collectorRegistry);
/** * Creates a new instance of {@link RateLimiterExports} with default metrics names prefix and * {@link Iterable} of rate limiters. * * @param rateLimiters the rate limiters */ public static RateLimiterExports ofIterable(Iterable<RateLimiter> rateLimiters) { return new RateLimiterExports(rateLimiters); }
/** * Creates a new instance of {@link RateLimiterExports} with specified metrics names prefix and * {@link Supplier} of rate limiters * * @param prefix the prefix of metrics names * @param rateLimitersSupplier the supplier of rate limiters */ public static RateLimiterExports ofSupplier(String prefix, Supplier<Iterable<RateLimiter>> rateLimitersSupplier) { return new RateLimiterExports(prefix, rateLimitersSupplier); }
/** * Creates a new instance of {@link RateLimiterExports} with specified metrics names prefix and * {@link RateLimiterRegistry} as a source of rate limiters. * * @param prefix the prefix of metrics names * @param rateLimitersSupplier the registry of rate limiters */ public static RateLimiterExports ofRateLimiterRegistry(String prefix, RateLimiterRegistry rateLimitersSupplier) { return new RateLimiterExports(prefix, rateLimitersSupplier); }
/** * Creates a new instance of {@link RateLimiterExports} with default metrics names prefix and * a rate limiter as a source. * * @param prefix the prefix of metrics names * @param rateLimiter the rate limiter */ public static RateLimiterExports ofRateLimiter(String prefix, RateLimiter rateLimiter) { return new RateLimiterExports(prefix, Array.of(rateLimiter)); }
/** * Creates a new instance of {@link RateLimiterExports} with default metrics names prefix and * a rate limiter as a source. * * @param rateLimiter the rate limiter */ public static RateLimiterExports ofRateLimiter(RateLimiter rateLimiter) { return new RateLimiterExports(Array.of(rateLimiter)); }
/** * Creates a new instance of {@link RateLimiterExports} with default metrics names prefix and * {@link RateLimiterRegistry} as a source of rate limiters. * @param rateLimiterRegistry the registry of rate limiters */ public static RateLimiterExports ofRateLimiterRegistry(RateLimiterRegistry rateLimiterRegistry) { return new RateLimiterExports(rateLimiterRegistry.getAllRateLimiters()); }