Class RoundRobinConnectionPool
- java.lang.Object
-
- org.eclipse.jetty.util.component.AbstractLifeCycle
-
- org.eclipse.jetty.util.component.ContainerLifeCycle
-
- org.eclipse.jetty.client.AbstractConnectionPool
-
- org.eclipse.jetty.client.MultiplexConnectionPool
-
- org.eclipse.jetty.client.RoundRobinConnectionPool
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,ConnectionPool
,Container
,Destroyable
,Dumpable
,Dumpable.DumpableContainer
,LifeCycle
,Sweeper.Sweepable
@ManagedObject public class RoundRobinConnectionPool extends MultiplexConnectionPool
A
ConnectionPool
that attempts to provide connections using a round-robin algorithm.The round-robin behavior is almost impossible to achieve for several reasons:
- the server takes different times to serve different requests; if a request takes a long time to be processed by the server, it would be a performance penalty to stall sending requests waiting for that connection to be available - better skip it and try another connection
- connections may be closed by the client or by the server, so it would be a performance penalty to stall sending requests waiting for a new connection to be opened
- thread scheduling on both client and server may temporarily penalize a connection
Do not expect this class to provide connections in a perfect recurring sequence such as
c0, c1, ..., cN-1, c0, c1, ..., cN-1, c0, c1, ...
because that is impossible to achieve in a real environment. This class will just attempt a best-effort to provide the connections in a sequential order, but most likely the order will be quasi-random.Applications using this class should
pre-create
the connections to ensure that they are already opened when the application starts to requests them, otherwise the first connection that is opened may be used multiple times before the others are opened, resulting in a behavior that is more random-like than more round-robin-like (and that confirms that round-robin behavior is almost impossible to achieve).- See Also:
RandomConnectionPool
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.client.ConnectionPool
ConnectionPool.Factory, ConnectionPool.Multiplexable
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container
Container.InheritedListener, Container.Listener
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
Dumpable.DumpableContainer
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
-
-
Constructor Summary
Constructors Constructor Description RoundRobinConnectionPool(HttpDestination destination, int maxConnections, Callback requester)
RoundRobinConnectionPool(HttpDestination destination, int maxConnections, Callback requester, int maxMultiplex)
-
Method Summary
-
Methods inherited from class org.eclipse.jetty.client.MultiplexConnectionPool
getMaxMultiplex, getMaxUsageCount, setMaxMultiplex, setMaxUsageCount
-
Methods inherited from class org.eclipse.jetty.client.AbstractConnectionPool
acquire, acquire, acquired, activate, close, deactivate, doStop, dump, getActiveConnectionCount, getActiveConnections, getConnectionCount, getIdleConnectionCount, getIdleConnections, getMaxConnectionCount, getMaxDuration, getPendingConnectionCount, getPendingCount, idle, isActive, isClosed, isEmpty, isMaximizeConnections, onCreated, preCreateConnections, proceed, release, released, remove, remove, removed, setMaxDuration, setMaximizeConnections, sweep, toString, tryCreate
-
Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, doStart, dump, dump, dump, dump, dumpBeans, dumpObject, dumpObjects, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeans
-
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpable
-
-
-
-
Constructor Detail
-
RoundRobinConnectionPool
public RoundRobinConnectionPool(HttpDestination destination, int maxConnections, Callback requester)
-
RoundRobinConnectionPool
public RoundRobinConnectionPool(HttpDestination destination, int maxConnections, Callback requester, int maxMultiplex)
-
-