Package discord4j.core.event
Class DefaultEventDispatcher.Builder
- java.lang.Object
-
- discord4j.core.event.DefaultEventDispatcher.Builder
-
- All Implemented Interfaces:
EventDispatcher.Builder
- Direct Known Subclasses:
ReplayingEventDispatcher.Builder
- Enclosing class:
- DefaultEventDispatcher
public static class DefaultEventDispatcher.Builder extends Object implements EventDispatcher.Builder
A builder to createEventDispatcher
instances.
-
-
Field Summary
Fields Modifier and Type Field Description protected FluxProcessor<Event,Event>
eventProcessor
protected Scheduler
eventScheduler
protected FluxSink.OverflowStrategy
overflowStrategy
-
Constructor Summary
Constructors Modifier Constructor Description protected
Builder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description EventDispatcher
build()
Create theEventDispatcher
DefaultEventDispatcher.Builder
eventProcessor(FluxProcessor<Event,Event> eventProcessor)
Set the underlyingFluxProcessor
the dispatcher will use to queue and distribute events.DefaultEventDispatcher.Builder
eventScheduler(Scheduler eventScheduler)
Set theScheduler
this dispatcher should use to publish events to its subscribers.SinksEventDispatcher.Builder
eventSink(Function<Sinks.ManySpec,Sinks.Many<Event>> eventSinkFactory)
Set the underlyingSinks.Many
the dispatcher will use to queue and distribute events.DefaultEventDispatcher.Builder
overflowStrategy(FluxSink.OverflowStrategy overflowStrategy)
Set theFluxSink.OverflowStrategy
for dealing with overflow scenarios where too many events are being published.
-
-
-
Field Detail
-
eventProcessor
protected FluxProcessor<Event,Event> eventProcessor
-
overflowStrategy
protected FluxSink.OverflowStrategy overflowStrategy
-
eventScheduler
protected Scheduler eventScheduler
-
-
Method Detail
-
eventSink
public SinksEventDispatcher.Builder eventSink(Function<Sinks.ManySpec,Sinks.Many<Event>> eventSinkFactory)
Description copied from interface:EventDispatcher.Builder
Set the underlyingSinks.Many
the dispatcher will use to queue and distribute events. Defaults to using a multicast buffering sink.- Specified by:
eventSink
in interfaceEventDispatcher.Builder
- Parameters:
eventSinkFactory
- the custom sink factory for events- Returns:
- this builder
-
eventProcessor
public DefaultEventDispatcher.Builder eventProcessor(FluxProcessor<Event,Event> eventProcessor)
Description copied from interface:EventDispatcher.Builder
Set the underlyingFluxProcessor
the dispatcher will use to queue and distribute events. Defaults to using anEmitterProcessor
.Using
EmitterProcessor
only emits events since a subscriber has subscribed to the processor (except for the first one which receives all queued signals until that point), and it allows you to configure the backing queue size while allowing you to use operators likeFlux.repeat()
andFlux.retry()
to drop the triggering signal.- Specified by:
eventProcessor
in interfaceEventDispatcher.Builder
- Parameters:
eventProcessor
- the custom processor for events- Returns:
- this builder
-
overflowStrategy
public DefaultEventDispatcher.Builder overflowStrategy(FluxSink.OverflowStrategy overflowStrategy)
Description copied from interface:EventDispatcher.Builder
Set theFluxSink.OverflowStrategy
for dealing with overflow scenarios where too many events are being published. Defaults to usingFluxSink.OverflowStrategy.BUFFER
to ensure all events are delivered at the cost of higher memory footprint and potentialOutOfMemoryError
scenarios.To only keep the earliest events you can use
FluxSink.OverflowStrategy.DROP
, and to only keep the most recent events, useFluxSink.OverflowStrategy.LATEST
. The number of events that can be queued until this strategy is applied depends on the underlying processor implementation.- Specified by:
overflowStrategy
in interfaceEventDispatcher.Builder
- Parameters:
overflowStrategy
- the custom backpressure strategy- Returns:
- this builder
-
eventScheduler
public DefaultEventDispatcher.Builder eventScheduler(Scheduler eventScheduler)
Description copied from interface:EventDispatcher.Builder
Set theScheduler
this dispatcher should use to publish events to its subscribers. Using a bounded elastic/blocking-capable one is recommended for general workloads that may have blocking sequences.- Specified by:
eventScheduler
in interfaceEventDispatcher.Builder
- Parameters:
eventScheduler
- a customScheduler
to publish events- Returns:
- this builder
-
build
public EventDispatcher build()
Description copied from interface:EventDispatcher.Builder
Create theEventDispatcher
- Specified by:
build
in interfaceEventDispatcher.Builder
- Returns:
- an
EventDispatcher
with the configured parameters.
-
-