Spring Reactor hands-on training (3 days)
See also workshop notes.
- What is reactive programming
- Crash course to
CompletableFutureand thread pools - Introducing Reactor
- How to create a stream?
just(),generate(),create(),fromCallable(),fromStream()
- Laziness
- Hot vs. cold
- Basic operators
map(),filter(),filterWhen()flatMap(),handle(),take(),skip()doOn*()operatorswindow(),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
- Concurrency with non-blocking code
- Advanced error handling and retries
transform()vs.transformDeferred()- Advanced operators
groupBy(),window()reduce(),scan()expand*()
- Backpressure
onBackpressure*()
ProcessorAPIUnicast,Emitter,Replay
- Advanced testing with virtual time
Context- Speculative execution example
- RxJava interoperability
- 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*()
- Reactor 3 Reference Guide
- Web on Reactive Stack in Spring Framework Documentation
- The "Spring WebFlux Framework" in Spring Boot Reference Guide
In IntelliJ it's much faster to run tests directly, rather than through Gradle.
Go to Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle and select IntelliJ IDEA from Run Tests Using drop-down.
Add this environment variable:
TESTCONTAINERS_RYUK_DISABLED=true
See: Disabling Ryuk
In .testcontainers.properties in your $HOME folder put the following line:
testcontainers.reuse.enable=true