Class AggregatorDispatcher

java.lang.Object
com.pnfsoftware.jeb.util.events.AggregatorDispatcher
All Implemented Interfaces:
IEventListener

public abstract class AggregatorDispatcher extends Object implements 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 events incoming period. Events are aggregated and dispatched only after either many events have been received or a timeout has elapsed.
  • 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 called
      triggerResolution - 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
  • Method Details

    • onEvent

      public void onEvent(IEvent e)
      Specified by:
      onEvent in interface IEventListener
    • unattended

      public int unattended()
    • capacity

      public int capacity()
    • resolution

      public long resolution()
    • onMultipleEvents

      public abstract void onMultipleEvents(List<IEvent> events)
      This method is called by the aggregator-dispatcher whenever any of the following condition occurs: enough events were collected; or enough time has 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