This is a prerelease version.

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. Or you can build your own custom sink, using the Jet API.

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"));