Kafka Streams API for Developers Online Course
Kafka Streams API for Developers Online Course
This course takes you deep into Kafka Streams development, starting with fundamental concepts and building your first streaming application locally. You’ll explore core operators, serialization and deserialization techniques, and implement an order management system for a retail company. Key topics include error handling, KTable and GlobalKTable usage, stateful operators, aggregations, rekeying records, and joins. You’ll also learn automated testing with unit and integration tests using Embedded Kafka, understand grace periods, and package your app for deployment. By the end, you’ll have the skills to design and launch robust Kafka Streams applications.
Who should take this Course?
The Kafka Streams API for Developers Online Course is ideal for software developers, data engineers, and backend programmers who want to build real-time, event-driven applications using Apache Kafka’s Streams API. It is also suitable for students, architects, and professionals seeking hands-on experience in stream processing, stateful computations, and data pipeline development to manage and process high-volume data efficiently.
What you will learn
- Build advanced Kafka Streams applications using Streams API
- Build Kafka Streams application using high-level DSL
- Test Kafka Streams using TopologyTestDriver using JUnit5
- Test Spring Kafka Streams using EmbeddedKafka and JUnit5
- Aggregate multiple events into aggregated events
- Learn to join multiple streams into one joined stream
Course Outline
Getting Started with the Course
- Course Introduction
- Prerequisites
Getting Started with Kafka Streams
- Introduction to Kafka Streams
- Kafka Streams Terminologies - Topology and Processor
- Introduction to KStreams API
Greetings Kafka Streams App Using KStreams API
- Overview of the Greetings App
- Set Up the Greetings App
- Topology of the Greetings App
- Build the Kafka Streams Launcher Application
- Setting Up Kafka Environment and Testing Our Greeting App
Operators in Kafka Streams Using KStreams API
- Filter and FilterNot
- Map/MapValues
- FlatMapValues/FlatMap
- peek
- merge
Serialization and Deserialization in Kafka Streams
- How Key/Value Serialization and Deserialization Works in Kafka Streams
- Providing Default Serializer/Deserializer Using Application Configuration
- Build Custom Serdes for Enhanced Greeting Messages
- Usage of Custom Serde in the Greeting App
Reusable Generic Serializer/Deserializer (Recommended Approach)
- Build a Generic Serializer/Deserializer
- Integrate Generic Serializer/Deserializer into the Greeting App
Order Management Kafka Streams Application - A Real-Time Use Case
- Overview of the Retail App
- Build the Topology for the Orders Management App
- Split the Restaurant/Retail Shopping Orders - Using Split and Branch Operator
- Transform the Order Domain to a Revenue Domain Type
Topology, Stream, and Tasks - Under the Hood
- Internals of Topology, Stream, and Tasks
- Explore the Behavior of Streams by Modifying the Stream Threads
Error/Exception Handling in Kafka Streams
- Failures in Kafka Streams
- Default Deserialization Error Behavior
- Custom Deserialization Error Handler
- Default and Custom Processor Error Handler
- Custom Production Error Handler
- Error Handling When Kafka Cluster Is Down
KTable and Global KTable
- Introduction to KTable API
- Build a Topology for KTable
- KTable - Under the Hood
- GlobalKTable
StateFul Operations in Kafka Streams - Aggregate, Join, and Windowing Events
- StateFul Operations in Kafka Streams
- What Is Aggregation and How It Works?
- Aggregation Using "count" Operator
- Aggregation Using "reduce" Operator
- Aggregation Using "aggregate" Operator
- Using Materialized Store for count and reduce Operators
StateFul Operation Results - How to Access Them?
- How to Access the Results of Aggregation
Aggregation in Order Management Application - A Real-Time Use Case
- Total Number of Orders by Each Store Using "count" Operator
- Total Revenue by Each Store Using "aggregate" Operator
Rekeying Kafka Records for Stateful Operations
- Effect of null Key in Stateful Operations and Repartition of Kafka Records
- Rekeying Using the "selectKey" Operator
StateFul Operations in Kafka Streams - Join
- Introduction to Joins and Types of Joins in Kafka Streams
- Explore innerJoin Using "join" Operator - Joining KStream and KTable
- Explore innerJoin Using "join" Operator - Joining KStream and GlobalKTable
- Explore innerJoin Using "join" Operator - Joining KTable and KTable
- Explore innerJoin Using "join" Operator - Joining KStream and KStream
- Joining Kafka Streams Using "leftJoin" Operator
- Joining Kafka Streams Using "outerJoin" Operator
- Join - Under the Hood
- Co-Partitioning Requirements in Joins
Join in Order Management Application - A Real-Time Use Case
- Join Aggregate Revenue with StoreDetails KTable
StateFul Operations in Kafka Streams - Windowing
- Introduction to Windowing and Time Concepts
- Windowing in Kafka Streams - Tumbling Windows
- Control Emission of Windowed Results Using "suppress" Operator
- Windowing in Kafka Streams - Hopping Windows
- Windowing in Kafka Streams - Sliding Windows
Widowing in Order Management Application - A Real-Time Use Case
- New Requirements for the Order Management Application
- Implementing a CustomTimeStamp Extractor
- Aggregate "Number of Orders" by Windows
- Aggregate Revenue by Windows
- Joins on the Windowed Data
Behavior of Records with Future and Older Timestamp in Windowing
- Records with Timestamps before and after the CurrentTimestamp
Build Kafka Streams Application Using Spring Boot
- Introduction to Spring Boot and Kafka Streams
- Set Up the Project - Greeting Streams App Using Spring Kafka Streams
- Configuring the Kafka Stream Using application.yml
- Build the Greeting Topology
- Test Greeting App in Local
Spring Boot Autoconfiguration of Kafka Streams
- Internals of Autoconfiguring Kafka Streams in Spring Boot
JSON Serialization/Deserialization in Spring Kafka Streams
- JSON Serialization/Deserialization Using JsonSerde
- JsonSerde Using Custom ObjectMapper
Error Handling in Spring Kafka Streams
- Handle Deserialization Error - Approach 1
- Handle Deserialization Error Using Custom Error Handler - Approach 2
- Handle Deserialization Errors Using Spring Specific Approach- Approach 3
- Handle Uncaught Exceptions in the Topology
- Handle Production Errors
Build Orders Kafka Streams Application Using Spring Boot
- Set Up the Base Project for Orders Kafka Streams App
- Create the OrdersTopology
Interactive Queries - Querying State Stores Using RESTFUL APIs
- Build a GET Endpoint to Retrieve the OrderCount by OrderType - Part 1
- Build a GET Endpoint to Retrieve the OrderCount by OrderType - Part 2
- Retrieve OrderCount by OrderType and LocationId
- Build a GET Endpoint to Retrieve the OrderCount for All OrderTypes
- Build a GET Endpoint to Retrieve the Revenue by OrderType
- Global Error Handling for Useful Client Error Messages
Interactive Queries - Querying Window State Stores Using RESTFUL APIs
- Build a GET Endpoint to Retrieve OrderCount by OrderType
- Build a GET Endpoint to Retrieve the Windowed OrderCount for All OrderTypes
- Build a GET Endpoint to Retrieve the Windowed OrderCount within a Time Range
- Build a GET Endpoint to Retrieve the Revenue by OrderType
Testing Kafka Streams Using TopologyTestDriver and JUnit5
- Testing Kafka Streams Using TopologyTestDriver
- Unit Testing Greetings App - Writing Data to a Output Topic
- Unit Testing Greetings App - Testing Multiple Messages
- Unit Testing Greetings App - Error Scenario
- Unit Testing OrdersCount - Writing Data to a State Store
- Unit Testing OrdersRevenue - Writing Data to a State Store
- Unit Testing OrdersRevenue by Windows - Writing Data to a State Store
- Limitations of TopologyTestDriver
Testing Kafka Streams in Spring Boot Using TopologyTestDriver and JUnit5
- Unit Test Using TopologyTestDriver in Spring Boot
Integration Testing Spring KafkaStreams App Using @EmbeddedKafka
- Introduction and Set Up Integration Test
- Integration Test for OrdersCount
- Integration Test for OrdersRevenue
- Integration Test for OrdersRevenue By Windows
Grace Period in Kafka Streams
- Grace Period in Windowing
Build and Package the Spring Boot App as an Executable
- Package the Spring Boot App and Execute It as a Jar File
Exactly Once Processing/Semantics in Kafka Streams
- What Is Exactly Once Processing and Why Is It Needed?
- Set Up Exactly Once Processing in Kafka Streams
- Transactions and Idempotent Producer - Under the Hood
- Limitations and Performance Impacts of Kafka Transactions
Running Kafka Streams Applications as Multiple Instances (Spring Boot)
- Running Kafka Streams Applications as Multiple Instances
- Set Up to Run the Kafka Streams as Multiple Instances
- Kafka Streams Metadata
- Aggregate Data from Multiple Instances - Overview
- Aggregate Data from Multiple Instances - Fetching Metadata - Part 1
- Aggregate Data from Multiple Instances - Building RestClients - Part 2
- Aggregate Data from Multiple Instances - Testing End to End - Part 3
- Key-Based Queries with Multiple Instances - Overview
- Key-Based Queries Multiple Instances - Fetching Metadata- Part 1
- Key-Based Queries Multiple Instances - Building RestClient and Testing- Part 2
- Refactor the Code for OrderCount for All OrderTypes Endpoint - /v1/orders/count
- Fix the Test Cases
- What about the Other Endpoints?
No reviews yet. Be the first to review!