001 002package io.vrap.rmf.base.client.http; 003 004import java.time.Duration; 005import java.util.concurrent.ExecutorService; 006import java.util.concurrent.ScheduledExecutorService; 007 008import dev.failsafe.spi.Scheduler; 009 010/** 011 * Middleware to limit the number of concurrent request using a Queue 012 * 013 * @include.example io.vrap.rmf.base.client.QueueMiddlewareTest#queueConfiguration() 014 */ 015public interface QueueRequestMiddleware extends Middleware { 016 public static QueueRequestMiddleware of(final ExecutorService executorService, final int maxRequests, 017 final Duration maxWaitTime) { 018 return new QueueMiddleware(executorService, maxRequests, maxWaitTime); 019 } 020 021 public static QueueRequestMiddleware of(final ScheduledExecutorService executorService, final int maxRequests, 022 final Duration maxWaitTime) { 023 return new QueueMiddleware(executorService, maxRequests, maxWaitTime); 024 } 025 026 public static QueueRequestMiddleware of(final Scheduler scheduler, final int maxRequests, 027 final Duration maxWaitTime) { 028 return new QueueMiddleware(scheduler, maxRequests, maxWaitTime); 029 } 030 031 public static QueueRequestMiddleware of(final int maxRequests, final Duration maxWaitTime) { 032 return new QueueMiddleware(maxRequests, maxWaitTime); 033 } 034}