Java-based Kafka Streams application for real-time data processing with deduplication, validation, and state store management.
Kafka-Streams-Processor/
βββ π src/main/java/
β βββ π consumers/ # Kafka consumer implementations
β βββ π org/example/kafka/
β βββ π config/ # Kafka configuration
β βββ π processor/ # Stream processors
β βββ π streaming/ # Main streaming applications
β βββ π topology/ # Stream topology definitions
β βββ π validator/ # Message validation
βββ π src/main/resources/ # Configuration files
βββ π docker-compose.yml # Kafka cluster setup
βββ π pom.xml # Maven dependencies
βββ π runbook.txt # Execution instructions
docker-compose up -d
mvn clean compile
mvn exec:java -Dexec.mainClass="org.example.kafka.streaming.KafkaStreamProcessor"
# Connect to Kafka container
docker exec -it kafka-streams-processor-kafka-1 bash
# Start producer
kafka-console-producer --broker-list localhost:19092 --topic input-topic-account-create \
--property "parse.key=true" --property "key.separator=:"
Class | Purpose |
---|---|
KafkaStreamProcessor |
Main streaming application entry point |
KafkaJoinStreamingProcessor |
Stream joining operations |
StreamProcessor |
Core stream processing logic |
UniqueRecordProcessor |
Deduplication processing |
File | Purpose |
---|---|
KafkaConfig.java |
Kafka streams configuration |
application.yaml |
Application properties |
config.yaml |
Custom configuration |
input-topic-account-create
- Account creation eventsinput-topic-account-update
- Account update events- Output topics configured in topology
- Deduplication: Unique record processing with state stores
- Validation: Schema-based message validation
- Join Operations: Stream-to-stream and stream-to-table joins
- State Management: RocksDB-backed state stores
- Error Handling: Dead letter queue patterns
- Monitoring: Application metrics and logging
- Java 11+
- Maven 3.6+
- Docker and Docker Compose
- Apache Kafka 2.7+
KAFKA_BOOTSTRAP_SERVERS=localhost:19092
KAFKA_APPLICATION_ID=KafkaStreamProcessor
state-store-account-create
- Account creation deduplicationstate-store-account-update
- Account update deduplication
Account creation event:
{
"event_id": "unique-event-id-001",
"timestamp": "2024-07-25T12:00:00Z",
"account_created": {
"account": {
"id": "acc-001",
"name": "Account Name",
"status": "active",
"permitted_denominations": ["GBP", "USD"]
}
}
}
tail -f logs/application.log
# List topics
kafka-topics --bootstrap-server localhost:19092 --list
# Monitor consumer group
kafka-consumer-groups --bootstrap-server localhost:19092 --describe --group KafkaStreamProcessor
# Check RocksDB state stores
ls -la KafkaStreamProcessor/
Input Topics β Stream Processor β Validation β Deduplication β Output Topics
β
State Stores (RocksDB)
See runbook.txt
for detailed test scenarios and sample messages.
mvn test
# Stop application
Ctrl+C
# Stop Kafka cluster
docker-compose down
# Remove volumes
docker-compose down -v
Real-time data processing with Apache Kafka Streams