Choose the Right Dispatcher
Learn how GenStage uses different dispatchers to send events to consumers.
We'll cover the following...
Introduction to dispatchers
There is one important component of GenStage
we haven’t talked about yet—the dispatcher. When :producer
and :producer_consumer
stages send events to consumers, it is the dispatcher that sends the events. So far, we’ve used the default DemandDispatcher
, but GenStage
comes with two more. Let’s see what they do and how we can use them.
DemandDispatcher
We can specify the kind of dispatcher to use when we initialize the process using the :dispatcher
key. The default is DemandDispatcher
, which is equivalent to this configuration:
def init(state) do{:producer, state, dispatcher: GenStage.DemandDispatcher}end
The DemandDispatcher
dispatcher sends events to consumers with the highest demand first. It is the dispatcher that we’ll use most often. However, there are cases where we may want to route events to consumers using a different strategy, where BroadcastDispatcher
and PartitionDispatcher
come ...