github.com/go-pkgz/flow (go): Package flow provides support for very basic FBP / pipelines. Each handler represents async stage consuming data from the input channel and publishing results to the output channel. Each handler runs in separate goroutines.  User must implement Handler function and add it to the Flow. Each handler usually creates an output channel, reads from the input channel, processes data and sends results to the output channel. Processing sequence defined by order of those handlers.  Any Handler can run in multiple concurrent goroutines (workers) by using the Parallel decorator.  FanOut allows to pass multiple handlers in the broadcast mode, i.e., each handler gets every input record. Outputs from these handlers merged and combined into a single output channel.  Processing error detected as return error value from user's handler func. Such error interrupts all other running handlers gracefully and won't keep any goroutine running/leaking.  Each Flow object can be executed only once.  Handler has to handle context cancellation as a termination signal.
Keywords: etl|fbp|flow|go|golang|library|pipeline