Programowanie reaktywne w Javie i Reactive Spring
Opis
Programowanie reaktywne w ciągu ostatnich kilku lat szturmem weszło do kanonu narzędzi programistycznych. Tworzenie aplikacji wielowątkowych, wykorzystujących wiele rdzeni procesora stała się koniecznością współczesnych systemów. Niniejsze szkolenie wprowadza programistę porządkując kluczowe pojęcia związane z programowaniem reaktywnym oraz przedstawia szczegółowo dwie kluczowe biblioteki: RxJava oraz Project Reactor (w zależności od potrzeb można się skupić na jednej z nich).
Szczegółowy program
Moduł 1.
Czym jest programowanie reaktywne?
- Wsparcie programowania reaktywnego w JVM
- Programowanie funkcyjne a reaktywność
- Różne biblioteki i podejścia do programowania reaktywnego
- Pojęcie backpressure
- Strumienie reaktywne
- Strumienie cold i hot
Moduł 2.
RxJava
- Observables
- Observers
- Subjects
- Scheduler
- Operatory reaktywne
Moduł 3.
Reactive Streams
- Publisher
- Subscriber
- SubmissionPublisher
- Subscription
- Processor
Moduł 4.
Projekt Reactor
- Model push-pull
- Mono
- Flux
- Tworzenie Flux i Mono
- Operatory filtrujące
- Operatory konwerujące
- Procesory Direct, Unicast, Emitter, Replay, Topic, WorkQueue
- Operatory groupBy, buffer, window, sample
- OnBackpressure
- Nieskończone strumienie danych
- Schedulers: immediate, single, parallel, elastic
Moduł 5.
Reaktywny dostęp do danych
- Reactive Spring Data
- ReactiveCrudRepository
- Spring Data Reactive Redis
- Spring Data Reactive MongoDB
- Kafka jako źródło danych
Moduł 6.
Webflux i Spring Reactive
- Reaktywne kontolery SpringMVC
- Funkcyjne endpointy reaktywne
- Reaktywny klient WebClient
- Server-Sent Events
- Reaktywny Spring Integration
- Reaktywny Spring Cloud Stream
- Reaktywny Gateway
Moduł 7.
Odporność na błędy z użyciem Hystrix i Sentinel
- Wzorzec Circuit Breaker
- Wzorzec Bulkhead
- Wzorzec Retry
- Zarządzanie obciążeniem z użyciem kolejki
- Wzorce Fail-fast, Fail-silent, Static fallback, Stubbed fallback, Dual-mode fallback
- Izolacja błędów
- API Hystrix i Sentinel
Moduł 8.
Testowanie kodu reaktywnego
- Testowanie nadawcy
- Testowanie odbiorcy
- Testowanie notyfikacji
- Wirtualizacja czasu
- Testowanie wywołań sieciowych (web)