
Indywidualny program
Poniższa agenda jest tylko ramą na której wspólnie zbudujemy zorientowane na Twoje potrzeby szkolenie.
Apache Kafka w ujęciu dla programistek i programistów Java
- Architektura Apache Kafka
- Wprowadzenie do komunikacji asynchronicznej
- Komunikacja w monolicie vs mikrousługi
- Przykłady zastosowań komunikacji asynchronicznej
- Systemy oparte o zdarzenia
- Architektura Apache Kafka
- Wprowadzenie do podstawowych pojęć
- Topics, Partitions, Offsets
- Brokers
- Topics Replication
- Producers
- Consumers, Consumers Groups
- Offsets
- Acks
- Kolejność wiadomości
- Replikacja
- Jak dobrać odpowiednią ilość partycji?
- Poziomy potwierdzenia dostarczenia wiadomości
- Co zapewnia Apache Kafka
- Skąd bierze się wydajność?
- Wprowadzenie do podstawowych pojęć
- Architektura Confluent Platform
- Kafka Streams
- Kafka Connect
- KSQL
- Rest Proxy
- Schema Registry
- Kafka CLI i Kafkacat
- Zarządzanie Topic’ami
- Wysyłanie wiadomości
- Odbieranie wiadomości
- Monitorowanie i zarządzanie Consumer Groups
- Zarządzanie Offset’ami
- Natywny klient Java
- Kafka Producer
- Implementacja niestandardowego partycjonowania
- Serializacja wiadomości
- Idempotentność
- Kafka Consumer
- Delivery semantics
- Deserializacja wiadomości
- Partition assignment strategies
- Static membership
- Implementacja cache w pamięci opartego o Kafka Consumer
- Transakcje
- Jak działają transakcje?
- Jak dobrać parametr transaction.id?
- Do czego wykorzystać transakcje na Apache Kafka?
- Implementacja aplikacji biznesowej przetwarzającej wiadomości w sposób transakcyjny
- Jak skonfigurować system do bezstratnego dostarczania wiadomości?
- Kafka Producer
- Wprowadzenie do komunikacji asynchronicznej
- Kafka Streams
- Koncepcja zastosowania w ekosystemie Confluent
- Architektura aplikacji opartych o Kafka Streams
- Dualizm strumień-tablica
- Topiki kompaktowe
- Lokalna baza danych RocksDB
- Changelog topic
- Repartition topic
- Analiza topologii strumieni
- Reset tool
- Operacje bezstanowe
- Operacje stanowe
- Zapis stanu w KTable
- Zapis stanu w GlobalKTable
- Agregowanie danych
- Łączenie strumieni
- Agregacja danych w oknach czasowych
- Odczytywanie lokalnego stanu systemu
- Interactive queries
- ReadOnlyKeyValueStore
- ReadOnlyWindowStore
- Standby replicas
- Transformers
- Przetwarzanie zgodnie z podejściem Stateful Record-By-Record
- Exactly once processing
- Testowanie aplikacji opartych o Kafka Streams
- Testy jednostkowe z wykorzystaniem kafka-streams-test-utils
- Testy integracyjne z wykorzystaniem Testcontainers
- Implementacja wzorców
- Saga
- Read-Process-Write
- Sortowanie i deduplikacja zdarzeń
- Wsparcie dla Apache Kafka w Spring Boot
- Podstawowe operacje
- Wysyłka wiadomości
- KafkaTemplate vs. KafkaProducer
- RoutingKafkaTemplate
- ReplyingKafkaTemplate
- Odbiór wiadomości
- Wątki
- Walidacja wiadomości
- Zarządzanie potwierdzeniami
- Ponawianie
- Wysyłka odpowiedzi
- Transakcje
- Publikowanie transakcyjne
- Transakcje inicjowane przez odczyt wiadomości
- Zarządzanie transaction.id przez Spring
- Wysyłka wiadomości
- Prawidłowa konfiguracja aplikacji
- Zarządzanie błędami
- Serializacja i deserializacja
- Nagłówki
- Testowanie
- Przegląd bibliotek do testowania asynchronicznego
- JUnit - Awaitility
- Spock - PollingConditions
- Wykorzystanie mechanizmów Spring w testach
- Uruchamianie Kafka do testów z wykorzystaniem spring-kafka-test
- Uruchamianie Kafka do testów z wykorzystaniem Testcontainers
- Przegląd bibliotek do testowania asynchronicznego
- Implementacja aplikacji biznesowej z wykorzystaniem Spring Boot, Apache Kafka oraz relacyjnej bazy danych
- Modelowanie procesów biznesowych w podejściu asynchronicznym
- Implementacja mechanizmów zapewniających idempotentność
- Wpływ asynchroniczności na modelowanie REST API
- Różne poziomy spójności
- Implementacja wzorca Transactional Outbox
- Podstawowe operacje