Release 0.4.0 ships directed, acyclic graph workflows, catalog-level grouping, and multiple bug fixes. 0.4.0 breaks backwards compatability with the previous release - 0.3.3. These changes are outlined below. See the changelog for full details.
:onyx/type
no longer accepts:transformer
,:aggregate
, or:grouper
. Transformations are now solely specified with:onyx/type
being keyed to:function
.- Grouping takes place inside the catalog entry by either setting
:onyx/group-by-key
or:onyx/group-by-fn
. The former groups all segments with the same key value to the same Onyx peer. The latter uses a keyword that points to a function on the classpath to group segments by an arbitrary function. - Aggregation can happen implictly anywhere, and is fully in the hands of the user.
- Workflows may now be a vector-of-vectors, which specifies a directed acyclic graph. See the information model documentation for a full specification. Onyx remains fully backwards compatible with the original tree-based workflows that it shipped in 0.3.x.
- Message acknowledge is no longer on its own thread, and has been removed from the pipeline interface.
read-batch
requires a sequence of maps to be returned, where each map is keyed with:input
and:message
, signaling the ingress source and message content, respectively.read-batch
must not perform a blocking read longer than:onyx/batch-timeout
ms in the catalog entry. The default is 1000 ms. All plugins must respect this.
Upgrade notes:
- Onyx 0.4.0 is incompatible with previous versions, and requires a restart of the Coordinator and all Peers.
Misc:
- Transducer support will be moved to release 0.5.0, and will be held until Clojure 1.7.0 officially ships.
A special thanks to all contributors: