Reactor training

Spring Reactor hands-on training (3 days)
Day 1: Introduction
- What is reactive programming
- Crash course to
CompletableFuture
and thread pools
- Introducing Reactor
- How to create a stream?
just()
, generate()
, create()
, fromCallable()
, fromStream()
- Laziness
- Basic operators
map()
, filter()
, filterWhen()
flatMap()
, handle()
, take()
, skip()
doOn*()
operators
window()
, buffer()
, distinct()
cast()
, ofType()
, index()
timestamp()
, elapsed()
zip()
, merge()
- Error handling
timeout()
, retry*()
, retryBackoff()
onError*()
- Blocking and reactive, back and forth
- Concurrency with blocking code and thread pools
subscribeOn()
, parallel()
- Unit testing
Day 2: Reactor advanced
- Concurrency with non-blocking code
- Advanced error handling and retries
transform()
vs. transformDeferred()
- Advanced operators
groupBy()
, window()
reduce()
, scan()
expand*()
- Backpressure
Processor
API
- Advanced testing with virtual time
Context
- Speculative execution example
- RxJava interoperability
Day 3: Practical
- Comparison to blocking and asynchronous servlets
- Refactoring existing application to Reactor
- Spring Boot
- Reactive database access
- Reactive controllers
WebFilter
- Global error handling
- Payload validation
- Web sockets
- Streaming data in and out
- Troubleshooting and debugging
checkpoint()
, onOperatorDebug()
, doOn*()
Reference materials
- Reactor 3 Reference Guide
- Web on Reactive Stack in Spring Framework Documentation
- The "Spring WebFlux Framework" in Spring Boot Reference Guide