| Tytuł: | Reactor i Spring WebFlux: programowanie reaktywne |
| Kod: | Spring - |
| Kategoria: | Spring Framework |
| Forma: | 10% wykład, 90% ćwiczenia |
| Czas trwania: | 3 dni |
| Odbiorcy: | developerzy, architekci |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Szkolenie wprowadza w temat programowania reaktywnego na przykładzie biblioteki Reactor.
Kładzie duży nacisk na zrozumienie fundamentalnych pojęć i mechanizmów oraz świadomie stosowanie w rzeczywistych projektach.
Szkolenie ma bardzo praktyczny charakter, uczestnicy najpierw pracują z serią małych ćwiczeń pod okiem instruktora. Na koniec wspólnie przygotujemy większą reaktywną aplikację opartą o framework Spring. Może być to rozproszona baza danych, strumień zdarzeń, itp. - w zależności od potrzeb uczestników.
Wyróżniki warsztatu
- niemal całe szkolenie to praktyczny warsztat i kodowanie na żywo
- idiomatyczne podejście do programowania reaktywnego, od kontrolera po bazę
- całkowity brak slajdów
Program Warsztatu eksperckiego
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
Podstawy- Czym jest programowanie reaktywne
- CompletableFuture i pule wątków
- Biblioteka Reactor
- Jak stworzyć strumień
- `just()`, `generate()`, `create()`, `fromCallable()`, `fromStream()`
- `just()`, `generate()`, `create()`, `fromCallable()`, `fromStream()`
- Leniwość, strumienie zimne i gorące
- Podstawowe operatory
- `map()`, `filter()`, `filterWhen()` `flatMap()`, `handle()`, `take()`, `skip()`
- `doOn*()` operators
- `window()`, `buffer()`, `distinct()`
- `cast()`, `ofType()`, `index()`
- `timestamp()`, `elapsed()`
- `zip()`, `merge()`
- `map()`, `filter()`, `filterWhen()` `flatMap()`, `handle()`, `take()`, `skip()`
- Obsługa błędów
- `timeout()`, `retry*()`, `retryBackoff()`
- `onError*()`
- `timeout()`, `retry*()`, `retryBackoff()`
- Blokowanie i wielowątkowość
- `subscribeOn()`, `publishOn()`
- `parallel()`
- `subscribeOn()`, `publishOn()`
- Testowanie jednostkowe
- Czym jest programowanie reaktywne
-
Zaawansowane- Nieblokujący kod
- Zaawansowana obsługa błędów
- `transform()` vs. `compose()`
- Zaawansowane operatory
- `groupBy()`, `window()`
- `reduce()`, `scan()`
- `expand*()`)
- `groupBy()`, `window()`
- Backpressure
- `Processor`
- Testowanie z wirtualnym czasem
- Kompatybilność z RxJava
- Nieblokujący kod
-
Zastosowania praktyczne- `ConnectableFlux`
- Refaktoring istniejącej aplikacji
- Spring Boot
- Reaktywny dostęp do bazy danych
- Reaktywne kontrolery
- `WebFilter`
- Globalna obsługa błędów
- Web sockety
- Reaktywne kontrolery
- Strumieniowanie danych na wejściu i wyjściu
- Debugowanie
- `checkpoint()`, `onOperatorDebug()`, `doOn*()`
- `checkpoint()`, `onOperatorDebug()`, `doOn*()`
- `ConnectableFlux`
Pobierz program w formacie PDF