Sending Results to Sinks
After defining the processing steps in a pipeline, you must send the results to at least one destination called a sink. Hazelcast comes with built-in sinks as well as a public API for building your own.
A sink is a bridge between a local or remote data system and your Hazelcast cluster, which allows you to send data from Hazelcast to another system for processing or storage.
Hazelcast comes with many built-in sinks, which we refer to as connectors.
As with sources, some sinks support batch processing while others support stream processing.
By default, all stream sinks support at-least-once guarantees, but only some of them support exactly-once guarantees. If you’re using idempotent updates, you can ensure exactly-once processing even with at-least-once sinks.
Symmetrically, you can fork the output of a stage and send it to more than one sink:
Pipeline p = Pipeline.create(); BatchStage<String> src = p.readFrom(TestSources.items("the", "quick", "brown", "fox")); src.map(String::toUpperCase) .writeTo(Sinks.files("uppercase")); src.map(String::toLowerCase) .writeTo(Sinks.files("lowercase"));