The FinalizerSet framework here is a mechanism for creating a
stream of acknowledged (finalized) event batch identifiers from a
source as done in a single background task. It does this by
pushing the batch status receiver along with an identifier into
either a FuturesOrdered or FuturesUnordered, waiting on the
stream of acknowledgements that comes out, extracting just the
identifier and sending that into the returned stream. The type T
is the source-specific data associated with each entry.
The OrderedFinalizer framework produces a stream of acknowledged
event batch identifiers from a source in a single background task
in the order they are received from the source, using
FinalizerSet.
The UnorderedFinalizer framework produces a stream of
acknowledged event batch identifiers from a source in a single
background task in the order that finalization happens on the
event batches, using FinalizerSet.