Kafka Streams API for Developers Online Course
Kafka Streams API for Developers Online Course
This course is designed to help developers build real-time streaming applications using the Kafka Streams API. It covers everything from basic concepts to advanced techniques, including stateful operations, aggregation, joins, windowing, and error handling. You will gain hands-on experience by developing a real-time retail order management system and building RESTful APIs for querying streaming data. By the end of the course, you will be able to design, test, and deploy enterprise-grade Kafka Streams applications using Spring Boot and Kafka Streams API.
Key Benefits
- Learn to build real-time data processing applications with Kafka Streams.
- Understand how to structure Kafka Streams topologies for optimal performance.
- Implement error-handling mechanisms for resilient applications.
- Master stateful operations, including aggregation, joins, and windowing.
- Develop RESTful APIs to retrieve real-time aggregated data.
- Integrate Kafka Streams with Spring Boot for enterprise applications.
- Write unit and integration tests for Kafka Streams applications.
- Deploy Kafka Streams applications efficiently in a production environment.
Target Audience
This course is best suited for:
- Java developers who want to specialize in real-time data processing.
- Kafka developers looking to expand their knowledge into Kafka Streams API.
- Big data engineers interested in building real-time analytics solutions.
- Software architects designing event-driven microservices.
- Developers who want to test and debug Kafka Streams applications effectively.
Prerequisites:
- Proficiency in Java (Java 17 recommended).
- Experience with Kafka Producers and Consumers.
- Basic knowledge of event-driven architectures.
- Familiarity with build tools like Gradle or Maven.
Learning Objectives
- Gain a strong foundation in Kafka Streams API and its architecture.
- Learn to build, test, and deploy real-time streaming applications.
- Understand Kafka Streams topologies and how they process data.
- Develop stateful Kafka Streams applications using aggregation, joins, and windowing.
- Implement error-handling strategies to build fault-tolerant applications.
- Integrate Kafka Streams with Spring Boot to develop enterprise-level applications.
- Build REST APIs for real-time querying of streaming data.
- Write unit tests and integration tests for Kafka Streams applications.
- Package and deploy Kafka Streams applications as executable JAR files.
Course Content Overview
The Kafka Streams API for Developers Exam covers the following topics -
Domain 1. Introduction and Course Setup
- Overview of the course and key learning objectives.
- Understanding the prerequisites required to get started.
Domain 2. Getting Started with Kafka Streams
- Introduction to Kafka Streams API and its capabilities.
- Explanation of key concepts, including topology and processor.
- Understanding the KStreams API and how it works.
Domain 3. Developing a Simple Kafka Streams App
- Introduction to the Greetings App, a basic Kafka Streams application.
- Setting up the project environment.
- Understanding the topology and components of the application.
- Implementing and launching a Kafka Streams app.
- Setting up Kafka locally and testing the application.
Domain 4. Exploring Kafka Streams Operators
- Using filter and filterNot to refine data streams.
- Understanding map and mapValues for data transformation.
- Using flatMapValues and flatMap for breaking down complex messages.
- Learning peek and merge for stream modifications.
Domain 5. Serialization and Deserialization in Kafka Streams
- Understanding how Kafka Streams serializes and deserializes key-value pairs.
- Configuring default serializers and deserializers in Kafka applications.
- Creating custom Serdes for message transformation.
- Using custom Serdes in the Greetings App for better message handling.
Domain 6. Building a Reusable Serializer/Deserializer
- Developing a generic serializer/deserializer for different message types.
- Integrating this generic serialization approach into Kafka applications.
Domain 7. Developing an Order Management System Using Kafka Streams
- Overview of the real-time order management system.
- Designing the data processing topology.
- Separating restaurant and retail orders using split and branch operators.
- Transforming order details into revenue-based data streams.
Domain 8. Understanding Internal Kafka Streams Mechanics
- Exploring how topology, stream, and tasks interact internally.
- Understanding the effects of modifying stream threads on processing behavior.
Domain 9. Handling Errors in Kafka Streams Applications
- Identifying failures in Kafka Streams processing.
- Understanding default deserialization error behavior.
- Implementing a custom deserialization error handler.
- Managing processing errors with custom solutions.
- Handling Kafka cluster failures effectively.
Domain 10. Working with KTable and GlobalKTable
- Introduction to KTable and GlobalKTable APIs.
- Implementing a KTable topology for data storage.
- Understanding how KTables function internally.
Domain 11. Performing Stateful Operations in Kafka Streams
- Understanding aggregation, joins, and windowing operations.
- Performing count-based aggregation in Kafka Streams.
- Using the reduce and aggregate operators for processing events.
- Storing aggregated data using materialized state stores.
Domain 12. Accessing Aggregated Data from State Stores
- Retrieving aggregation results from Kafka Streams.
Domain 13. Stateful Operations in Order Management System
- Counting total orders per store using count operator.
- Calculating total revenue per store using aggregate operator.
Domain 14. Rekeying Kafka Records for Stateful Operations
- Understanding the impact of null keys on stateful operations.
- Using the selectKey operator to rekey Kafka records.
Domain 15. Joining Data Streams in Kafka Streams
- Introduction to different types of joins in Kafka Streams.
- Implementing inner joins between KStreams, KTables, and GlobalKTables.
- Using left joins and outer joins for merging data streams.
- Understanding the co-partitioning requirements for joins.
Domain 16. Performing Joins in Order Management System
- Combining revenue data with store details using joins.
Domain 17. Working with Windowing in Kafka Streams
- Introduction to windowing techniques in Kafka.
- Implementing tumbling, hopping, and sliding windows.
- Controlling window result emission using suppress operator.
Domain 18. Windowing in Order Management System
- Extracting custom timestamps from events.
- Aggregating orders and revenue within time windows.
- Performing joins on windowed data.
Domain 19. Handling Out-of-Order Events in Windowing
- Managing records with earlier and future timestamps.
Domain 20. Developing Kafka Streams Applications with Spring Boot
- Setting up Kafka Streams with Spring Boot.
- Configuring Kafka Streams using application.yml.
- Developing Spring Boot Kafka Streams applications.
Domain 21. Spring Boot Auto-Configuration for Kafka Streams
- Understanding automatic configuration in Spring Boot Kafka Streams.
Domain 22. JSON Serialization/Deserialization in Spring Kafka Streams
- Implementing JsonSerde for JSON message handling.
Domain 23. Error Handling in Spring Kafka Streams
- Managing deserialization errors using different approaches.
- Handling uncaught exceptions in Kafka topology.
Domain 24. Building Order Management System with Spring Boot
- Developing Kafka Streams topology for order processing.
Domain 25. Building REST APIs for Interactive Queries
- Creating REST endpoints to query order count and revenue in real-time.
Domain 26. Testing Kafka Streams Applications
- Writing unit tests using TopologyTestDriver.
- Performing integration testing using Embedded Kafka.
Domain 27. Implementing Grace Period in Kafka Streams
- Understanding grace period behavior in windowing operations.
Domain 28. Packaging and Deploying Kafka Streams Applications
- Building Spring Boot Kafka Streams applications as executable JAR files.
Domain 29. Ensuring Exactly-Once Processing in Kafka Streams
- Setting up exactly-once semantics in Kafka Streams.
- Understanding transactions and idempotency in Kafka.
Domain 30. Running Kafka Streams Applications on Multiple Instances
- Configuring multiple Kafka Streams instances for scalability.