gen_stage v0.8.0 Experimental.GenStage.BroadcastDispatcher
A dispatcher that accumulates demand from all consumers before broadcasting events to all of them.
If a producer uses BroadcastDispatcher, its subscribers can specify
an optional :selector
function of type (event :: any -> boolean)
in the subscription options.
Assume producer
and consumer
are stages exchanging events of type
%{:key => String.t, any => any}
, then by calling
GenStage.sync_subscribe(consumer,
to: producer,
selector: fn %{key: key} -> String.starts_with?(key, "foo-") end)
consumer
will receive all and only events broadcasted from producer
for which the selector function returns a truthy value.
The :selector
option can be specified in sync and async subscriptions,
as well as in the :subscribe_to
list in the return tuple of c:GenStasge.init/1