New to Kestra?
Use blueprints to kickstart your first workflows.
A realtime Kafka trigger starts one Kestra execution per record, branches on the payload, and alerts Slack on anomalies. No consumer service to run.
Turn a Kafka topic into per-record workflow executions with event-driven orchestration. This blueprint consumes each message from a Kafka stream the moment it arrives, starts one Kestra execution per record, branches on the message payload, and routes anomalies to Slack while logging normal records. It solves a common streaming problem: reacting to individual events in real time without building, deploying, and babysitting a standalone consumer service. The trigger is the consumer, so offsets, retries, and per-record execution history are managed for you.
on_record trigger (io.kestra.plugin.kafka.RealtimeTrigger) subscribes to the transactions topic, deserializes each message as JSON, and launches one execution per record using the kestra-realtime-processor consumer group.route_record task (io.kestra.plugin.core.flow.If) inspects the record with a jq expression on trigger.value and branches when .status equals FAILED.alert_anomaly (io.kestra.plugin.slack.notifications.SlackIncomingWebhook) posts a message to Slack with the topic, offset, and execution id.log_record (io.kestra.plugin.core.log.Log) records that the message was processed normally with its partition and offset.Kafka delivers messages, but it has no scheduler and no workflow engine of its own. Kestra adds the event trigger that turns each record into a fully observable execution, with automatic retries, replay on failure, and lineage across every task. Everything is declarative YAML, version controlled and reviewable, instead of bespoke consumer code you have to maintain. The gap Kafka itself cannot fill is orchestration: branching, downstream actions, alerting, and per-event audit history.
transactions) producing JSON messages with a status field.KAFKA_BOOTSTRAP_SERVERS: Kafka bootstrap servers, e.g. broker1:9092,broker2:9092SLACK_WEBHOOK_URL: Slack incoming webhook URL.topic at your stream and set the groupId.If condition and jq expression to match your message shape.disabled: false on the trigger to start consuming.then branch to quarantine, enrich, or remediate failed records.groupType: SHARE on the trigger and acknowledge with acknowledgeType.Trigger for grouped micro-batches.