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.
What is a Sink?
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.
Types of Sink
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.
Sending Data to Multiple 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"));