Turn Kafka records into Kestra workflows.

Kafka moves the events. Kestra turns them into work: one execution per record in real time, or batched pulls on an interval, with the consumer, retries, and downstream chain handled for you. Stream into the warehouse, produce events after a pipeline, and trace every record in one history.

Blueprints for Kafka orchestration.

Reacting to Kafka usually means running and babysitting your own consumer service. Kestra makes the topic a trigger: RealtimeTrigger starts one execution per record, Trigger batches records on an interval, and Consume reads mid-flow. From there it chains straight into Snowflake or BigQuery loads, dbt transforms, and notifications, with retries and one execution history per record. No consumer infrastructure to operate.

Start a flow for every Kafka record Open blueprint
Stream a Kafka topic into BigQuery Open blueprint
Extract from an API and produce to Kafka Open blueprint

Above a hand-rolled consumer service.

Kafka owns the log, the partitions, and the offsets. Kestra owns what happens to each record: how it triggers a flow, what runs next, who is alerted, and where the per-record audit trail lives.

One execution per record, in real time

The io.kestra.plugin.kafka.RealtimeTrigger consumes records as they arrive and starts one execution per record, with manual offset commits and configurable deserializers. No long-running consumer to write, deploy, and monitor; the trigger is the consumer, and each record gets its own traced run.

Batched pulls for grouped work

When per-record is too granular, the Trigger polls on a fixed interval (default one minute), batches records into one execution, and stores them in internal storage. Use it for micro-batch loads into the warehouse where grouping beats one-at-a-time.

Streaming ETL into the warehouse

Consume writes fetched records to internal storage as ION, ready to load into Snowflake or BigQuery. A flow can consume a topic, transform with dbt, and land curated rows, turning a raw stream into warehouse tables with retries on each step.

Produce events after a pipeline

Orchestration is not only consuming. Produce publishes records to a topic with configurable serializers and transactional sends, so a flow can emit a completion event, a CDC-style change, or a downstream signal once its work is done. Other consumers and Kestra triggers pick it up.

Share groups and queue semantics

Modern Kafka supports share groups for queue-style consumption with explicit acknowledgements. Kestra exposes this through groupType: SHARE on the consume and trigger tasks, so a topic can be worked as a queue with multiple competing consumers, not just a partitioned log.

No consumer infrastructure to run

The usual cost of reacting to Kafka is a fleet of consumer apps to deploy, scale, and page on. Kestra runs the consumer inside the orchestrator, so reacting to a topic is a trigger definition, not a service. Offsets, retries, and execution history come built in.

How teams use Kafka and Kestra

Patterns streaming and platform teams run in production today. Each one shows the flow end to end, with the real plugin classes in play.

Realtime

Start a flow for every Kafka record

The RealtimeTrigger starts one execution per record. Kestra routes by payload, runs the matching work, and alerts on anomalies. Each record gets its own traced run, with no consumer service to operate.

One execution per record

RealtimeTrigger fans each record into its own traced run.

Manual offset commits

Offsets commit after the work succeeds, so failures replay.

Route by content

A Switch sends each record type down its own path.

kafka trigger
per record
route
by payload
process
matching work
notify
on anomaly
Streaming ETL

Stream a topic into the warehouse

The batch Trigger pulls records on an interval, Kestra transforms them, and loads into Snowflake or BigQuery. Micro-batching turns a raw stream into curated warehouse tables with per-step retries.

Micro-batch by interval

The Trigger groups records into one execution per pull.

ION to warehouse

Consumed records land as ION, ready to load.

Retries per step

A failed load retries without re-consuming the batch.

kafka trigger
batched pull
transform
shape records
warehouse load
Snowflake / BQ
notify
on complete
Produce

Emit an event when a pipeline finishes

After a flow completes its work, Produce publishes a completion or CDC-style event to a topic. Downstream consumers and other Kestra flows react to it, decoupling the producer from everyone who cares.

Decouple downstream

Consumers react to the event without coupling to the producer.

Transactional sends

Produce uses transactional sends by default.

Trigger other flows

A Kestra trigger on the topic chains the next pipeline.

schedule
pipeline runs
do work
the pipeline
kafka produce
emit event
notify
on publish
Queue

Work a topic as a queue with share groups

With groupType: SHARE, multiple competing consumers pull from one topic with explicit acks, queue-style. Kestra runs the worker logic per record and acks on success, so a backlog drains across parallel executions.

Queue semantics

Share groups give competing-consumer behavior with explicit acks.

Drains in parallel

A backlog spreads across parallel executions.

Ack on success

Records ack only after the work completes.

kafka trigger
share group
work item
process
branch
ack or retry
notify
on failure
Bridge

Bridge Kafka to another cloud or system

Kestra consumes a Kafka topic and writes to AWS S3, a database, or an HTTP API, bridging Kafka to systems it does not reach natively. One execution history covers the consume and the downstream write.

Reach non-Kafka systems

Land records in S3, a database, or an API in the same flow.

One history end to end

The consume and the downstream write share one execution ID.

Retries on the write

A failed upload retries without re-consuming the records.

kafka consume
read topic
transform
shape payload
s3 upload
to AWS
notify
on complete
Kestra gives us a modern orchestration platform we can run ourselves without compromising on governance.
Platform Architect, Dataport
1Control plane
3 weeksTo validate compliance

Kestra vs the alternatives Kafka teams reach for

Capability
Kafka Connect
Temporal
Prefect
One execution per record
RealtimeTrigger
Sink/source only, no logicWorkflow per signal, codedCustom consumer code
Batched interval pulls
Trigger task
Connector configCodedCustom code
Chain consume with dbt and warehouse
Native plugins
Sink connectors onlyCode activitiesPython code required
Produce events from a flow
Produce task
Source connectorCoded activityCustom code
Share-group queue semantics
groupType SHARE
NoNot applicableCustom code
Per-record execution history
One run per record
Connector logsWorkflow historyApp logs
No consumer service to operate
Trigger is the consumer
Connect cluster to runWorker fleet to runService to run

Kafka & Kestra: common questions

Find answers to your questions right here, and don't hesitate to Contact Us if you couldn't find what you're looking for.

See How

Ready to turn Kafka events into workflows?

Trigger per record or on batched pulls, stream into the warehouse, produce events after a pipeline, all with no consumer service to operate. Open source, self-hosted, event-driven.