Kafka Fundamentals for Java Developers
Durată
24
ore
Locație
Pe net
Limba
Engleză
Cod
JVA-083
Training pentru 7-8 sau mai multe persoane?
Personalizați antrenamentele
pentru nevoile dumneavoastră specifice
Descriere
Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. This tagline from the main Apache Kafka website sounds vague, yet when we find out that more than 80% of Fortune 100 companies use Kafka extensively, we start to understand how important that platform is for modern software development.
This course will introduce Apache Kafka to Java developers. We will focus solely on:
- Understanding how asynchronous messaging empowers software systems of any size;
- Main messaging models: point-to-point and publish/subscribe;
- Pros of asynchronous messaging;
- Building blocks of Kafka – let’s recreate the thought process behind designing Kafka;
- Differences from other message brokers which allow Kafka to achieve its amazing performance (achievable at that point in time);
- A broad set of responsibilities Kafka puts on developers during project and implementation phases;
Tools and libraries to interact with Kafka, solving real-life challenges and obstacles.
![certificat](/theme/courses-2023/partials/catalog.item/detail/src/images/certificate-lt.png)
După finalizarea cursului, se eliberează un certificat
în formularul Luxoft Training
în formularul Luxoft Training
Obiective
- Understand Apache Kafka internal architecture and its behavior;
- Be able to design a Kafka topic, having in mind proper data retention, client application performance, latency and throughput;
- Be able to run a local Kafka cluster for development purposes;
- Access CLI (command line tools) and AKHQ (Web UI) for simple Kafka management;
- Create Kafka Java Api clients: producers, consumers, processors;
- Managing data formats used in Kafka with the help of Apache Avro, along with ways to safely evolve those formats;
- Solve real-world problems of message production and consumption, serialization, error handling, or transaction management (using Spring for Kafka integration);
- Enter the world of stream processing by using the Kafka Stream library and getting to know a range of stateless and stateful event stream transformations.
Public țintă
Java Developers, System Architects
Cerințe preliminare
Development experience in Java (2 years)
Foaia de parcurs
- Module 1: Introduction
- Asynchronous message passing
- Messaging models
- Setting up local Kafka installation using Docker
- Design your own Kafka - Let’s recreate the thought process behind creating Kafka
- Designing a safe and performant data exchange
- Command Line Interface
- Java Client API
- Project structure and dependencies
- Producer API and configuration
- Consumer API and configuration
- Admin API
- Enabling more manual control over production/consumption process
- Polling and heartbeat for assuring client application liveness and readiness.
- Large throughput setup – programmatic example
- Transactions
- Data Formats
- The need to use managed data format
- Introduction to Apache Avro
- Building Avro records using generated DTO classes and dynamic GenericRecord approach
- Schema evolution and compatibility types
- Introduction to Schema Registry
- How to create a Kafka application backed by Avro and Schema Registry
- Avro powered producer
- SpecificRecord consumer
- GenericRecord consumer
- AKHQ support for Schema Registry – interacting with Web UI
- Spring Framework Integration
- Topic creation
- KafkaTemplate for sending messages
- No-code setup using application.properties
- Simplified consumer using @EventListener
- Configuring Kafka clients from code for advanced setups
- Handling concurrency
- JSON support
- Avro support
- Transactions
- Implementing processors
- Request/response pattern using ReplyingKafkaTemplate
- Error handling, retries, dead letter topic recoverer
- Kafka Streams
- Introduction
- Stateless processing
- Avro support
- Stateful processing
- Processing operators
- Data locality principle
- Windowing
- Joins