13. Web MVC vs. WebFlux
• Web MVC
• Synchronous processing
• Asynchronous processing
• Supports reactive types Flux/Mono (based on asynchronous processing)
• WebFlux
• Non-blocking processing
13
14. Use Cases
• High Traffic
• Remote Call to Database with non-blocking driver
• Remote Call to Microservice
• Streaming
• Mobile applications and backends
14
54. Challenges
• Learning curve is higher
• Servlet API is not available
• ThreadLocal -> Context from Reactor Core
• Exceptions as we know them from imperative programming
• Blocking calls
54
55. Reactor Debug Agent
• When something goes wrong it’s often hard to determine what happened
• Extensive framework results in overloaded stack traces
• Asynchronous execution results in partial stack traces
• Reactor Debug Agent gives you Reactor flow traces, with near-zero runtime
performance overhead
55
57. BlockHound
• Reactive programming requires that your application be non-blocking throughout
its entire execution
• Blocking one of the very few threads has a massive impact
• But given all your dependencies it’s often hard to determine if something in your
application is blocking
• BlockHound watches your code, executes and throws an error any time a
blocking API is called, identifying and preventing blocking
57