Package com.pnfsoftware.jeb.util.events
Class AggregatorDispatcher
java.lang.Object
com.pnfsoftware.jeb.util.events.AggregatorDispatcher
- All Implemented Interfaces:
IEventListener
An
event aggregator-dispatcher. This object is useful when the frequency of events
reception is getting high - and as a consequence, event processing time getting larger (relatively)
than the incoming event period. Events are aggregated and dispatched only after either many events have been received or a timeout has elapsed.-
Constructor Summary
ConstructorsConstructorDescriptionCreate a new aggregator-dispatcher with a capacity of 100, and a resolution of 250 ms.AggregatorDispatcher(int capacity, long triggerResolution) Create a new aggregator-dispatcher. -
Method Summary
Modifier and TypeMethodDescriptionintcapacity()Get the maximum number of queued events before an immediate dispatch is triggered.voidHandle an event.abstract voidonMultipleEvents(List<IEvent> events) This method is called by the aggregator-dispatcher whenever any of the following condition occurs:enough eventswere collected; orenough timehas elapsed.longGet the timed dispatch resolution.intGet the number of events currently waiting to be dispatched.
-
Constructor Details
-
AggregatorDispatcher
public AggregatorDispatcher()Create a new aggregator-dispatcher with a capacity of 100, and a resolution of 250 ms. -
AggregatorDispatcher
public AggregatorDispatcher(int capacity, long triggerResolution) Create a new aggregator-dispatcher.- Parameters:
capacity- event capacity, at least 1: after that many events are received,onMultipleEvents(List)routine is calledtriggerResolution- a resolution in milliseconds: the period at which the event queue is automatically dispatched and cleaned, regardless of whether the capacity was reached. Careful: 0 is a valid resolution at which the auto-dispatcher is disabled, ie, events are dispatched ONLY when the aggregator is at full capacity- Throws:
IllegalArgumentException- if the capacity is not positive or the trigger resolution is negative
-
-
Method Details
-
onEvent
Description copied from interface:IEventListenerHandle an event.- Specified by:
onEventin interfaceIEventListener- Parameters:
e- event to handle
-
unattended
public int unattended()Get the number of events currently waiting to be dispatched.- Returns:
- the number of queued events
-
capacity
public int capacity()Get the maximum number of queued events before an immediate dispatch is triggered.- Returns:
- the dispatch capacity
-
resolution
public long resolution()Get the timed dispatch resolution.- Returns:
- the dispatch resolution in milliseconds, or 0 if timed dispatch is disabled
-
onMultipleEvents
This method is called by the aggregator-dispatcher whenever any of the following condition occurs:enough eventswere collected; orenough timehas elapsed.Thread notes: This method may be called by the thread that generated the event, or any other worker thread used by the aggregator-dispatcher. Execution of this method is serialized: the next execution of
onMultipleEvents(List)will not start until the previous execution has terminated.- Parameters:
events- the list of collected events
-