Spring Reactor hands-on training (3 days)
See also workshop notes.
- What is reactive programming
- Crash course to
CompletableFuture
and 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*()
Processor
APIUnicast
,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