Skip to main content
Each example below is a complete design you can import: save the JSON as a file, open Streams → Create Stream, click Upload in the wizard header, and pick the file. The canvas and configuration load ready to explore — or to submit. To actually run one:
  1. Create its input topic on the Topics page (the topic names are in each example).
  2. Check Stream Propertiesbootstrap.servers should point at your cluster.
  3. Submit, then produce a few messages to the input topic (Topics → Create Message) and watch the output topic.

1 — Filter and transform (stateless)

demo-inputFilterMap Valuesdemo-output. Keeps only records whose value contains error, then upper-cases them. Two SpEL expressions, no state — the smallest useful pipeline:

2 — Word count (stateful)

The classic. text-linesFlatMap Values (tokenize) → Group By (the word becomes the key) → CountTo Streamword-counts.
Count produces a KTable of running totals, so its value type is Long — note the sink’s value serde. To Stream converts the table’s changelog back into a stream for the sink. Produce a few text lines and watch per-word counts accumulate on word-counts.

3 — Tumbling-window count (windowed)

windowing-inputGroup By KeyTumbling Window (5 seconds) → CountTo Streamwindow-out-tumbling. Counts records per key, per 5-second window — the same count pattern as word count, but the total resets with each window instead of running forever. No expressions at all: grouping is by the existing key, and the window node just carries its size (windowSizeMs: 5000). Produce several messages with the same key in quick succession, wait past the window, produce again — the output shows a count per window.

Where to go from here

Duplicate a node, change an expression, re-validate — the building guide covers the canvas, and the SpEL reference covers everything you can write in an expression. And remember to Download your variants: designs live in the file, not the server.