This is a prerelease version.

View latest

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