- 2.70.0 (latest)
- 2.69.0
- 2.68.2
- 2.67.0
- 2.66.0
- 2.65.0
- 2.63.1
- 2.62.0
- 2.61.0
- 2.60.0
- 2.59.1
- 2.58.0
- 2.57.0
- 2.55.0
- 2.54.1
- 2.53.0
- 2.52.0
- 2.51.0
- 2.50.0
- 2.49.0
- 2.48.1
- 2.47.0
- 2.46.1
- 2.45.0
- 2.43.0
- 2.42.0
- 2.41.0
- 2.39.0
- 2.38.0
- 2.37.0
- 2.36.0
- 2.35.0
- 2.34.1
- 2.33.0
- 2.32.1
- 2.31.1
- 2.30.1
- 2.24.0
- 2.23.3
- 2.22.0
- 2.21.0
- 2.20.1
- 2.19.6
- 2.18.7
- 2.17.0
- 2.16.0
- 2.15.0
- 2.14.0
- 2.13.0
- 2.12.2
- 2.11.0
- 2.10.0
- 2.9.0
- 2.8.1
- 2.7.1
public
interface
Batcher<ElementT
,
ElementResultT
>
extends
AutoCloseable
Represents a batching context where individual elements will be accumulated and flushed in a large batch request at some point in the future. The buffered elements can be flushed manually or when triggered by an internal threshold. This is intended to be used for high throughput scenarios at the cost of latency.
Batcher instances are not thread safe. To use across different threads, create a new Batcher instance per thread.
Implements
AutoCloseableType Parameters
ElementT
ElementResultT
Static Fields
THROTTLED_TIME_KEY
public
static
final
ApiCallContext
.
Key<Long>
THROTTLED_TIME_KEY
ApiCallContext.Key for tracking batch total throttled time
Methods
add(ElementT entry)
public
abstract
ApiFuture<ElementResultT>
add
(
ElementT
entry
)
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.
entry
ElementT
cancelOutstanding()
public
abstract
void
cancelOutstanding
()
Cancels all outstanding batch RPCs.
close()
public
abstract
void
close
()
Closes this Batcher by preventing new elements from being added, then flushing the existing elements and waiting for all the outstanding work to be resolved.
close(Duration timeout)
public
abstract
void
close
(
Duration
timeout
)
Closes this Batcher by preventing new elements from being added, then flushing the existing elements and waiting for all the outstanding work to be resolved. If all of the outstanding work has not been resolved, then a BatchingException will be thrown with details of the remaining work. The batcher will remain in a closed state and will not allow additional elements to be added.
closeAsync()
public
abstract
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
flush()
public
abstract
void
flush
()
Synchronously sends any pending elements as a batch and waits for all outstanding batches to be complete.
sendOutstanding()
public
abstract
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.