I’m a fan of the GenStage processing model. What I’m looking for is a way to describe a processing graph composed of GenStage components.
At first I thought that Flow (https://hexdocs.pm/flow/Flow.html) would be an obvious choice. However, Flow doesn’t appear to support easy composability of custom GenStages. Flow supports GenStage sources and sinks, but I don’t see a way to create an intermediate graph from the Flow APIs.
There doesn’t appear to be a via
function that would wire arbitrary GenStage components together.
Did I miss something in my exploration of Flow? Are there other Elixir libraries that already do this? Ideally, I’d be looking for something that provides a rich DSL out of the box (a bunch of built-in GenStages), with the ability to wire in custom components as necessary.
My exemplar for this on the JVM would be Akka Streams. They support a rich Java/Scala DSL, a component model, and method for custom extension/composition.