Skip to main content
The pipeline can consume data from Kafka topics in real time. Configure the Kafka consumer in application.yaml, and the pipeline subscribes to topics based on registered pipeline configurations with streamAttributes.type: "kafka".
Kafka is opt-in. The bundled kafka, zookeeper, and kafka-ui services are gated behind the kafka Compose profile. To use the bundled broker, set COMPOSE_PROFILES=kafka in .env and run docker compose up -d — the kafka-data, zookeeper-data, and zookeeper-log volumes come along automatically. The kafka-clients library is included in the assembly JAR, so pipelines that point at any external Kafka broker work without enabling the bundled one.

Enabling the Kafka Consumer

Set the kafkaConsumer block in application.yaml:

Configuration Reference

How Topics Are Resolved

At startup, the consumer reads all pipeline configurations from the database and subscribes to topics for pipelines that have streamAttributes.type: "kafka". The topic name is constructed as {topicPrefix}.{pipelineName}. For example, with topicPrefix: "oss" (defined in kafkaConsumer.topicPrefix in application.yaml) and a pipeline named orders, the consumer subscribes to topic oss.orders. When a Kafka message arrives on oss.orders, the consumer strips the prefix and looks up the pipeline named orders to determine how to process the data.

Data Formats

The format of incoming records is determined by the pipeline configuration — not auto-detected. Configure the pipeline’s source.fileAttributes to match the data format:
  • CSV — use csvAttributes with the appropriate delimiter. Records are parsed by position against the pipeline schema.
  • JSON — use jsonAttributes. Field names in the payload are matched against the pipeline schema by name.
  • XML — use xmlAttributes. Element names are matched against the pipeline schema by name.
Any plain text data can be consumed as long as the pipeline schema and file attributes match the format.

Full Example

A complete setup with a pipeline configuration and the Kafka consumer enabled: application.yaml
Pipeline configuration (orders)
Produce a test message and verify ingestion:

Offset Management

The pipeline uses Kafka’s auto-commit to track offsets using the configured groupId. If the consumer restarts, it resumes from the last committed offset. New consumer groups start from the earliest offset. To reprocess a topic from the beginning, reset the consumer group offsets:

Troubleshooting