Package org.apache.camel.support.cache
Class PollingConsumerServicePool
- java.lang.Object
-
- org.apache.camel.support.service.BaseService
-
- org.apache.camel.support.service.ServiceSupport
-
- org.apache.camel.support.cache.PollingConsumerServicePool
-
- All Implemented Interfaces:
AutoCloseable,org.apache.camel.NonManagedService,org.apache.camel.Service,org.apache.camel.ShutdownableService,org.apache.camel.StatefulService,org.apache.camel.SuspendableService
public class PollingConsumerServicePool extends org.apache.camel.support.service.ServiceSupportPollingConsumerpool.
-
-
Constructor Summary
Constructors Constructor Description PollingConsumerServicePool(org.apache.camel.util.function.ThrowingFunction<org.apache.camel.Endpoint,org.apache.camel.PollingConsumer,Exception> creator, Function<org.apache.camel.PollingConsumer,org.apache.camel.Endpoint> getEndpoint, int capacity)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Sacquire(org.apache.camel.Endpoint endpoint)Tries to acquire the producer/consumer with the given keyvoidcleanUp()Cleanup the pool (removing stale instances that should be evicted)protected voiddoBuild()protected voiddoStart()protected voiddoStop()protected voidonEvict(S s)This callback is invoked by LRUCache from a separate background cleanup thread.voidrelease(org.apache.camel.Endpoint endpoint, S s)Releases the producer/consumer back to the poolintsize()Returns the current size of the pool-
Methods inherited from class org.apache.camel.support.service.BaseService
build, doFail, doInit, doLifecycleChange, doResume, doShutdown, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
-
-
Method Detail
-
onEvict
protected void onEvict(S s)
This callback is invoked by LRUCache from a separate background cleanup thread. Therefore we mark the entries to be evicted from this thread only, and then let SinglePool and MultiPool handle the evictions (stop the producer/consumer safely) when they are acquiring/releases producers/consumers. If we sop the producer/consumer from the LRUCache background thread we can have a race condition with a pooled producer may have been acquired at the same time its being evicted.
-
acquire
public S acquire(org.apache.camel.Endpoint endpoint) throws ExceptionTries to acquire the producer/consumer with the given key- Parameters:
endpoint- the endpoint- Returns:
- the acquired producer/consumer
- Throws:
Exception
-
release
public void release(org.apache.camel.Endpoint endpoint, S s)Releases the producer/consumer back to the pool- Parameters:
endpoint- the endpoints- the producer/consumer
-
size
public int size()
Returns the current size of the pool
-
cleanUp
public void cleanUp()
Cleanup the pool (removing stale instances that should be evicted)
-
doBuild
protected void doBuild() throws Exception- Overrides:
doBuildin classorg.apache.camel.support.service.BaseService- Throws:
Exception
-
doStart
protected void doStart() throws Exception- Overrides:
doStartin classorg.apache.camel.support.service.BaseService- Throws:
Exception
-
-