Package com.lmax.disruptor
Class BatchEventProcessor<T>
java.lang.Object
com.lmax.disruptor.BatchEventProcessor<T>
- Type Parameters:
T
- event implementation storing the data for sharing during exchange or parallel coordination of an event.
- All Implemented Interfaces:
EventProcessor
,Runnable
Convenience class for handling the batching semantics of consuming entries from a
RingBuffer
and delegating the available events to an EventHandler
.
If the EventHandler
also implements LifecycleAware
it will be notified just after the thread
is started and just before the thread is shutdown.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final BatchStartAware
private final DataProvider
<T> private final EventHandler
<? super T> private ExceptionHandler
<? super T> private static final int
private static final int
private final AtomicInteger
private static final int
private final Sequence
private final SequenceBarrier
private final TimeoutHandler
-
Constructor Summary
ConstructorsConstructorDescriptionBatchEventProcessor
(DataProvider<T> dataProvider, SequenceBarrier sequenceBarrier, EventHandler<? super T> eventHandler) Construct aEventProcessor
that will automatically track the progress by updating its sequence when theEventHandler.onEvent(Object, long, boolean)
method returns. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
private ExceptionHandler
<? super T> Get a reference to theSequence
being used by thisEventProcessor
.void
halt()
Signal that this EventProcessor should stop when it has finished consuming at the next clean break.private void
handleEventException
(Throwable ex, long sequence, T event) Delegate toExceptionHandler.handleEventException(Throwable, long, Object)
on the delegate or the defaultExceptionHandler
if one has not been configured.private void
Delegate toExceptionHandler.handleOnShutdownException(Throwable)
on the delegate or the defaultExceptionHandler
if one has not been configured.private void
Delegate toExceptionHandler.handleOnStartException(Throwable)
on the delegate or the defaultExceptionHandler
if one has not been configured.boolean
private void
Notifies the EventHandler immediately prior to this processor shutting downprivate void
Notifies the EventHandler when this processor is starting upprivate void
notifyTimeout
(long availableSequence) private void
void
run()
It is ok to have another thread rerun this method after a halt().void
setExceptionHandler
(ExceptionHandler<? super T> exceptionHandler) Set a newExceptionHandler
for handling exceptions propagated out of theBatchEventProcessor
-
Field Details
-
IDLE
private static final int IDLE- See Also:
-
HALTED
private static final int HALTED- See Also:
-
RUNNING
private static final int RUNNING- See Also:
-
running
-
exceptionHandler
-
dataProvider
-
sequenceBarrier
-
eventHandler
-
sequence
-
timeoutHandler
-
batchStartAware
-
-
Constructor Details
-
BatchEventProcessor
public BatchEventProcessor(DataProvider<T> dataProvider, SequenceBarrier sequenceBarrier, EventHandler<? super T> eventHandler) Construct aEventProcessor
that will automatically track the progress by updating its sequence when theEventHandler.onEvent(Object, long, boolean)
method returns.- Parameters:
dataProvider
- to which events are published.sequenceBarrier
- on which it is waiting.eventHandler
- is the delegate to which events are dispatched.
-
-
Method Details
-
getSequence
Description copied from interface:EventProcessor
Get a reference to theSequence
being used by thisEventProcessor
.- Specified by:
getSequence
in interfaceEventProcessor
- Returns:
- reference to the
Sequence
for thisEventProcessor
-
halt
public void halt()Description copied from interface:EventProcessor
Signal that this EventProcessor should stop when it has finished consuming at the next clean break. It will callSequenceBarrier.alert()
to notify the thread to check status.- Specified by:
halt
in interfaceEventProcessor
-
isRunning
public boolean isRunning()- Specified by:
isRunning
in interfaceEventProcessor
-
setExceptionHandler
Set a newExceptionHandler
for handling exceptions propagated out of theBatchEventProcessor
- Parameters:
exceptionHandler
- to replace the existing exceptionHandler.
-
run
public void run()It is ok to have another thread rerun this method after a halt().- Specified by:
run
in interfaceRunnable
- Throws:
IllegalStateException
- if this object instance is already running in a thread
-
processEvents
private void processEvents() -
earlyExit
private void earlyExit() -
notifyTimeout
private void notifyTimeout(long availableSequence) -
notifyStart
private void notifyStart()Notifies the EventHandler when this processor is starting up -
notifyShutdown
private void notifyShutdown()Notifies the EventHandler immediately prior to this processor shutting down -
handleEventException
Delegate toExceptionHandler.handleEventException(Throwable, long, Object)
on the delegate or the defaultExceptionHandler
if one has not been configured. -
handleOnStartException
Delegate toExceptionHandler.handleOnStartException(Throwable)
on the delegate or the defaultExceptionHandler
if one has not been configured. -
handleOnShutdownException
Delegate toExceptionHandler.handleOnShutdownException(Throwable)
on the delegate or the defaultExceptionHandler
if one has not been configured. -
getExceptionHandler
-