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 Detail

      • BatchingExecutor

        public BatchingExecutor​(String name,
                                P processor,
                                int maxTasksPerBatch,
                                boolean fair,
                                FailureHandler failureHandler,
                                Consumer<? super W> blockingRetryProducer)
        Parameters:
        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.