UmbrellaStage
Subscribes GenStage consumers to producers across Elixir Umbrella apps.
Installation
Add umbrella_stage to your list of dependencies in mix.exs:
Elixir >= 1.4 required
def deps do
[
{:umbrella_stage, "~> 0.1.0"}
]
endUsage
-
Configuration
usetheUmbrellaStagein the GenStages servers. It required 2 arguments:
:type- is the GenStage type::producer,:producer_consumeror:consumer:producers- required only for consumers and producer_consumers. It's the list of producers, the consumer (or producer_consumer) will subscribe to, in the following format:{ProducerName, [subscription_options]}
-
Call
umbrella_sync_subscribe()in the GenStageinit
This version of umbrella_stage implements just the GenStage.sync_subscribe/3 subscription.
Examples
Consumer
defmodule MyConsumer do
use UmbrellaStage,
type: :consumer,
producers: [
{MyProducerConsumer, [max_demand: 10]}
]
def init() do
umbrella_sync_subscribe()
.....
end
endProducerConsumer
defmodule MyProducerConsumer do
use UmbrellaStage,
type: :producer_consumer,
producers: [
{MyProducer, [max_demand: 10]}
]
def init() do
umbrella_sync_subscribe()
.....
end
end
Producer
defmodule MyProducer do
use UmbrellaStage,
type: :producer
def init() do
umbrella_sync_subscribe()
.....
end
end