public class BatchingEventPublisher extends java.lang.Object implements EventPublisher
| Modifier and Type | Field and Description |
|---|---|
protected static long |
DEFAULT_MESSAGE_INTERVAL_NANOS |
protected java.util.Set<Event> |
eventMessages |
protected static java.util.concurrent.ScheduledExecutorService |
publishingExecutor |
protected java.util.Map<java.lang.Class<? extends Event>,java.util.Set<EventSubscriber>> |
subscribersMap |
| Constructor and Description |
|---|
BatchingEventPublisher() |
BatchingEventPublisher(long messageIntervalNanos)
Constructs a PeriodicEventPublisher instance and submits a thread to periodically send message batches.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
initPublishingThread(long messageIntervalNanos) |
void |
publish(Event event)
Publishes an event.
|
protected void |
sendMessages() |
void |
subscribe(EventSubscriber subscriber,
java.util.Set<java.lang.Class<? extends Event>> eventClasses)
Registers the given subscriber for the given event classes.
|
void |
unsubscribe(EventSubscriber subscriber,
java.util.Set<java.lang.Class<? extends Event>> eventClasses)
Unsubscribes the given subscriber from the given event classes.
|
protected static final long DEFAULT_MESSAGE_INTERVAL_NANOS
protected final java.util.Map<java.lang.Class<? extends Event>,java.util.Set<EventSubscriber>> subscribersMap
protected final java.util.Set<Event> eventMessages
protected static final java.util.concurrent.ScheduledExecutorService publishingExecutor
public BatchingEventPublisher()
public BatchingEventPublisher(long messageIntervalNanos)
messageIntervalNanos - the rate at which messages batches should be sent, in nanoseconds.protected void initPublishingThread(long messageIntervalNanos)
protected void sendMessages()
public void subscribe(EventSubscriber subscriber, java.util.Set<java.lang.Class<? extends Event>> eventClasses)
EventPublishersubscribe in interface EventPublishersubscriber - the subscriber to be notified when the given event classes occur.eventClasses - the classes of events that the subscriber should be notified of.public void unsubscribe(EventSubscriber subscriber, java.util.Set<java.lang.Class<? extends Event>> eventClasses)
EventPublisherunsubscribe in interface EventPublishersubscriber - the subscriber to unsubscribe from the given event classes.eventClasses - the classes of events that the subscriber wants to unsubscribe from.public void publish(Event event)
EventPublisherpublish in interface EventPublisherevent - the event to publish.