Class BatchingExecutor<P extends BatchedWorkProcessor,W extends BatchedWork<? super P>>


public final class BatchingExecutor<P extends BatchedWorkProcessor,W extends BatchedWork<? super P>> extends Object
An executor of works that accepts works from multiple threads, puts them in a queue, and processes them in batches in a single background thread.

Useful when works can be merged together for optimization purposes (bulking in Elasticsearch), or when they should never be executed in parallel (writes to a Lucene index).

  • Constructor Details

    • BatchingExecutor

      public BatchingExecutor(String name, P processor, int maxTasksPerBatch, boolean fair, FailureHandler failureHandler, Consumer<? super W> blockingRetryProducer)
      name - The name of the executor thread (and of this executor when reporting errors)
      processor - A task processor. May not be thread-safe.
      maxTasksPerBatch - The maximum number of tasks to process in a single batch. Higher values mean more opportunity for the processor to optimize execution, but higher heap consumption.
      fair - if true tasks are always submitted to the processor in FIFO order, if false tasks submitted when the internal queue is full may be submitted out of order.
      failureHandler - A failure handler to report failures of the background thread.
      blockingRetryProducer - A retry work producer that would be called in case of offloading operation submitter and full queue.
  • Method Details