public class BatcherImpl<ElementT,ElementResultT,RequestT,ResponseT> implements Batcher<ElementT,ElementResultT>Queues up the elements until #flush() is called; once batching is over, returned future resolves.
This class is not thread-safe, and expects to be used from a single thread.
Implements
com.google.api.gax.batching.Batcher<ElementT,ElementResultT>Type Parameters |
|
|---|---|
| Name | Description |
ElementT |
|
ElementResultT |
|
RequestT |
|
ResponseT |
|
Constructors
BatcherImpl(BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT> batchingDescriptor, UnaryCallable<RequestT,ResponseT> unaryCallable, RequestT prototype, BatchingSettings batchingSettings, ScheduledExecutorService executor) (deprecated)
public BatcherImpl(BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT> batchingDescriptor, UnaryCallable<RequestT,ResponseT> unaryCallable, RequestT prototype, BatchingSettings batchingSettings, ScheduledExecutorService executor)Deprecated. Please instantiate the Batcher with FlowController and ApiCallContext
| Parameters | |
|---|---|
| Name | Description |
batchingDescriptor |
BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT>a BatchingDescriptor for transforming individual elements into wrappers request and response |
unaryCallable |
UnaryCallable<RequestT,ResponseT>a UnaryCallable object |
prototype |
RequestTa RequestT object |
batchingSettings |
BatchingSettingsa BatchingSettings with configuration of thresholds |
executor |
ScheduledExecutorService |
BatcherImpl(BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT> batchingDescriptor, UnaryCallable<RequestT,ResponseT> unaryCallable, RequestT prototype, BatchingSettings batchingSettings, ScheduledExecutorService executor, FlowController flowController) (deprecated)
public BatcherImpl(BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT> batchingDescriptor, UnaryCallable<RequestT,ResponseT> unaryCallable, RequestT prototype, BatchingSettings batchingSettings, ScheduledExecutorService executor, FlowController flowController)Deprecated. Please instantiate the Batcher with ApiCallContext
| Parameters | |
|---|---|
| Name | Description |
batchingDescriptor |
BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT>a BatchingDescriptor for transforming individual elements into wrappers request and response |
unaryCallable |
UnaryCallable<RequestT,ResponseT>a UnaryCallable object |
prototype |
RequestTa RequestT object |
batchingSettings |
BatchingSettingsa BatchingSettings with configuration of thresholds |
executor |
ScheduledExecutorService |
flowController |
FlowControllera FlowController for throttling requests. If it's null, create a FlowController object from BatchingSettings#getFlowControlSettings(). |
BatcherImpl(BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT> batchingDescriptor, UnaryCallable<RequestT,ResponseT> unaryCallable, RequestT prototype, BatchingSettings batchingSettings, ScheduledExecutorService executor, FlowController flowController, ApiCallContext callContext)
public BatcherImpl(BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT> batchingDescriptor, UnaryCallable<RequestT,ResponseT> unaryCallable, RequestT prototype, BatchingSettings batchingSettings, ScheduledExecutorService executor, FlowController flowController, ApiCallContext callContext)| Parameters | |
|---|---|
| Name | Description |
batchingDescriptor |
BatchingDescriptor<ElementT,ElementResultT,RequestT,ResponseT>a BatchingDescriptor for transforming individual elements into wrappers request and response |
unaryCallable |
UnaryCallable<RequestT,ResponseT>a UnaryCallable object |
prototype |
RequestTa RequestT object |
batchingSettings |
BatchingSettingsa BatchingSettings with configuration of thresholds |
executor |
ScheduledExecutorService |
flowController |
FlowControllera FlowController for throttling requests. If it's null, create a FlowController object from BatchingSettings#getFlowControlSettings(). |
callContext |
ApiCallContexta ApiCallContext object that'll be merged in unaryCallable |
Methods
add(ElementT element)
public ApiFuture<ElementResultT> add(ElementT element)Queues the passed in element to be sent at some point in the future.
The element will be sent as part of a larger batch request at some point in the future. The returned ApiFuture will be resolved once the result for the element has been extracted from the batch response.
Note: Cancelling returned result simply marks the future cancelled, It would not stop the batch request.
| Parameter | |
|---|---|
| Name | Description |
element |
ElementT |
| Returns | |
|---|---|
| Type | Description |
ApiFuture<ElementResultT> |
|
close()
public void close()Closes this Batcher by preventing new elements from being added, and then flushing the existing elements.
| Exceptions | |
|---|---|
| Type | Description |
InterruptedException |
|
closeAsync()
public ApiFuture<Void> closeAsync()Closes this Batcher by preventing new elements from being added, and then sending outstanding elements. The returned future will be resolved when the last element completes
| Returns | |
|---|---|
| Type | Description |
ApiFuture<Void> |
|
flush()
public void flush()Synchronously sends any pending elements as a batch and waits for all outstanding batches to be complete.
| Exceptions | |
|---|---|
| Type | Description |
InterruptedException |
|
getFlowController()
public FlowController getFlowController()| Returns | |
|---|---|
| Type | Description |
FlowController |
|
sendOutstanding()
public void sendOutstanding()Sends accumulated elements asynchronously for batching.
Note: This method can be invoked concurrently unlike #add and #close, which can only be called from a single user thread. Please take caution to avoid race condition.