Top Description Methods
reactor.pool

public Interface PoolConfig<POOLABLE>

Known Direct Implementers
reactor.pool.DefaultPoolConfig
Imports
java.time.Clock, .Duration, java.util.function.BiFunction, .BiPredicate, .Function, org.reactivestreams.Publisher, reactor.core.Disposable, reactor.core.publisher.Mono, reactor.core.scheduler.Scheduler, .Schedulers

A representation of the common configuration options of a Pool. For a default implementation that is open for extension, see DefaultPoolConfig.
Author
Simon Baslé

Method Summary

Modifier and TypeMethod and Description
public Scheduler
acquisitionScheduler()

When set, Pool implementation MAY decide to use the Scheduler to publish resources in a more deterministic way: the publishing thread would then always be the same, independently of which thread called Pool#acquire() or PooledRef#release() or on which thread the allocator produced new resources.

public AllocationStrategy
allocationStrategy()

AllocationStrategy defines a strategy / limit for the number of pooled object to allocate.

public Mono<POOLABLE>
allocator()

The asynchronous factory that produces new resources, represented as a Mono.

public Clock
clock()

The java.time.Clock to use to timestamp pool lifecycle events like allocation and eviction, which can influence eg.

public Function<POOLABLE, ? extends Publisher<Void>>
destroyHandler()

Defines a mechanism of resource destruction, cleaning up state and OS resources it could maintain (eg.

public default Duration
evictInBackgroundInterval()

If the pool is configured to perform regular eviction checks on the background, returns the Duration representing the interval at which such checks are made.

public default Scheduler
evictInBackgroundScheduler()

If the pool is configured to perform regular eviction checks on the background, returns the Scheduler on which these checks are made.

public BiPredicate<POOLABLE, PooledRefMetadata>
evictionPredicate()

A BiPredicate that checks if a resource should be destroyed (true) or is still in a valid state for recycling.

public int
maxPending()

The maximum number of pending borrowers to enqueue before failing fast.

public PoolMetricsRecorder
metricsRecorder()

The PoolMetricsRecorder to use to collect instrumentation data of the Pool implementations.

public default BiFunction<Runnable, Duration, Disposable>

Returns:

the function to apply when scheduling timers for pending acquisitions
pendingAcquireTimer
()

The function that defines how timeouts are scheduled when a Pool#acquire(Duration) call is made and the acquisition is pending.

public Function<POOLABLE, ? extends Publisher<Void>>
releaseHandler()

When a resource is released, defines a mechanism of resetting any lingering state of the resource in order for it to become usable again.

public boolean

Returns:

true for LRU, false for MRU
reuseIdleResourcesInLruOrder
()

The order in which idle (aka available) resources should be used when the pool was under-utilized and a new Pool#acquire() is performed.

Method Detail

acquisitionSchedulerback to summary
public Scheduler acquisitionScheduler()

When set, Pool implementation MAY decide to use the Scheduler to publish resources in a more deterministic way: the publishing thread would then always be the same, independently of which thread called Pool#acquire() or PooledRef#release() or on which thread the allocator produced new resources. Note that not all pool implementations are guaranteed to enforce this, as they might have their own thread publishing semantics.

Defaults to Schedulers#immediate(), which inhibits this behavior.

allocationStrategyback to summary
public AllocationStrategy allocationStrategy()

AllocationStrategy defines a strategy / limit for the number of pooled object to allocate.

allocatorback to summary
public Mono<POOLABLE> allocator()

The asynchronous factory that produces new resources, represented as a Mono.

clockback to summary
public Clock clock()

The java.time.Clock to use to timestamp pool lifecycle events like allocation and eviction, which can influence eg. the evictionPredicate().

destroyHandlerback to summary
public Function<POOLABLE, ? extends Publisher<Void>> destroyHandler()

Defines a mechanism of resource destruction, cleaning up state and OS resources it could maintain (eg. off-heap objects, file handles, socket connections, etc...).

For example, a database connection could need to cleanly sever the connection link by sending a message to the database.

evictInBackgroundIntervalback to summary
public default Duration evictInBackgroundInterval()

If the pool is configured to perform regular eviction checks on the background, returns the Duration representing the interval at which such checks are made. Otherwise returns Duration#ZERO (the default).

evictInBackgroundSchedulerback to summary
public default Scheduler evictInBackgroundScheduler()

If the pool is configured to perform regular eviction checks on the background, returns the Scheduler on which these checks are made. Otherwise returns Schedulers#immediate() (the default).

evictionPredicateback to summary
public BiPredicate<POOLABLE, PooledRefMetadata> evictionPredicate()

A BiPredicate that checks if a resource should be destroyed (true) or is still in a valid state for recycling. This is primarily applied when a resource is released, to check whether or not it can immediately be recycled, but could also be applied during an acquire attempt (detecting eg. idle resources) or by a background reaping process. Both the resource and some metrics about the resource's life within the pool are provided.

maxPendingback to summary
public int maxPending()

The maximum number of pending borrowers to enqueue before failing fast. 0 will immediately fail any acquire when no idle resource is available and the pool cannot grow. Use a negative number to deactivate.

metricsRecorderback to summary
public PoolMetricsRecorder metricsRecorder()

The PoolMetricsRecorder to use to collect instrumentation data of the Pool implementations.

pendingAcquireTimerback to summary
public default BiFunction<Runnable, Duration, Disposable> pendingAcquireTimer()

The function that defines how timeouts are scheduled when a Pool#acquire(Duration) call is made and the acquisition is pending. i.e. there is no idle resource and no new resource can be created currently, so a timeout is scheduled using the returned function.

By default, the Schedulers#parallel() scheduler is used.

Returns:BiFunction<Runnable, Duration, Disposable>

the function to apply when scheduling timers for pending acquisitions

releaseHandlerback to summary
public Function<POOLABLE, ? extends Publisher<Void>> releaseHandler()

When a resource is released, defines a mechanism of resetting any lingering state of the resource in order for it to become usable again. The evictionPredicate is applied AFTER this reset.

For example, a buffer could have a readerIndex and writerIndex that need to be flipped back to zero.

reuseIdleResourcesInLruOrderback to summary
public boolean reuseIdleResourcesInLruOrder()

The order in which idle (aka available) resources should be used when the pool was under-utilized and a new Pool#acquire() is performed. Returns true if LRU (Least-Recently Used, the resource that was released first is emitted) or false for MRU (Most-Recently Used, the resource that was released last is emitted).

Returns:boolean

true for LRU, false for MRU