Spring Webflux Masterclass: Reactive Microservices [2024]
Last updated 8/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 4.45 GB | Duration: 13h 18m
Last updated 8/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 4.45 GB | Duration: 13h 18m
Build Highly Responsive, Scalable, Efficient Microservices With Spring WebFlux and Reactive Programming
What you'll learn
Spring WebFlux From Scratch
Reactive Microservices
Performance Comparison - Traditional vs Reactive
Achieving High Performance & Scalability With HTTP2
Streaming API With Back-Pressure
Reactive Relational DB Connectivity R2DBC
Server Sent Events
WebClient
Functional Endpoints
WebFilters / Interceptors
Integration Testing
Requirements
Strong Knowledge on Reactive Programming (checkout my course if you are new to reactive programming)
Knowledge on Spring Boot
Comfortable with Indian Accent :)
Description
Prerequisite: Knowledge on Reactive Programming.Course FocusThis course provides a comprehensive introduction to Spring WebFlux, a framework for building highly scalable, resilient and responsive web applications using reactive programming principles.What You'll LearnTraditional vs Reactive APIsHow Reactive APIs are different from Traditional APIs.Reactive Data Access R2DBCLearn to connect to relational databases reactively using R2DBC drivers, create reactive repositories with Spring Data R2DBC, implement CRUD operations with reactive data access patterns, and effectively integration test your data access layer.Running a throughput/efficiency test to demonstrate the power of R2DBC, its throughput and how it uses the system resources more efficiently compared to Spring Data JPA.Building CRUD OperationsMaster creating reactive controllers with Spring WebFlux annotations, handling requests and responses with Flux and Mono, integration testing your reactive controllers.Error Handling StrategiesDiscover techniques for managing exceptions within reactive pipelines using various operators. Learn how to return meaningful error responses for a robust user experience.WebFilter/Interceptor ChainingExplore how to implement WebFilters for pre-processing and post-processing requests and responses. Chain multiple WebFilters for complex logic, pass attributes from WebFilters to controllers, and share data effectively.Functional Programming with WebFluxLeverage the power of lambda expressions to write concise and readable code. Build reactive controllers with functional endpoints and understand the benefits of functional programming within WebFlux.Building Reactive ClientsLearn to use WebClient to build reactive clients that consume external APIs using reactive streams and handle asynchronous responses efficiently in a non-blocking manner.StreamingImplement client-side streaming for uploading data as a stream using WebClient and explore backpressure handling for optimized data transfer.Implement server-side streaming for downloading data as a stream using WebClient.Implement Server-Sent Events (SSE) with Spring WebFlux to enable real-time data updates from server to client.Optimizing for PerformanceGzip compressionHTTP connection pooling to optimize bandwidth usage and application scalability.Leveraging HTTP/2 protocol for efficient communication (New!).Integration TestingMaster integration testing with WebTestClient, combining testing practices into our learning process throughout the course.Course StructureFocus on practical code examples and demos tailored to each module's specific topic.Hands-on labs to solidify your learning throughout the course.Access to resources for further learning on both Spring WebFlux and prerequisite reactive programming concepts (articles, tutorials, official documentation).By the end of this course, you'll be equipped with the knowledge and skills to build modern, performant, and scalable web applications using Spring WebFlux.NoteA basic understanding of reactive programming is assumed as a prerequisite for this course.Join this course to master Spring WebFlux and unlock the potential of reactive programming for developing highly performant and scalable microservices. Gain the skills necessary to build resilient, efficient, and real-time applications using Spring WebFlux's non-blocking and event-driven architecture.
Overview
Section 1: Introduction
Lecture 1 Before You Enroll
Section 2: Traditional vs Reactive APIs
Lecture 2 *** Resource ***
Lecture 3 Project Setup
Lecture 4 External Services
Lecture 5 Traditional vs Reactive API
Lecture 6 Traditional vs Reactive API - Demo
Lecture 7 Traditional vs Reactive API - Demo via Browser
Lecture 8 Exposing Streaming API
Lecture 9 Common Mistake Using Reactive Pipeline
Lecture 10 How Reactive Web Works - Step By Step
Lecture 11 FAQ - Should Entire Stack Be Reactive?
Lecture 12 Reactive Web is Resilient - Demo
Lecture 13 Summary
Section 3: Spring Data R2DBC
Lecture 14 Introduction
Lecture 15 Connection String
Lecture 16 *** Resource *** - Database Initialization Scripts
Lecture 17 Project Setup
Lecture 18 Spring Data - Crash Course
Lecture 19 Customer Entity / Repository
Lecture 20 Step Verifier - Crash Course
Lecture 21 CRUD Using Repository - Part 1
Lecture 22 CRUD Using Repository - Part 2
Lecture 23 CRUD Using Repository - Part 3
Lecture 24 R2DBC - Show SQL
Lecture 25 *** Assignment *** - Price Range Query Method
Lecture 26 Pageable
Lecture 27 What About Complex Queries?
Lecture 28 *** Resource *** - SQL For Products Ordered By Customer
Lecture 29 Join Query Using @Query
Lecture 30 *** Resource *** - SQL For Projection
Lecture 31 Projection
Lecture 32 R2DBC Database Client
Lecture 33 Summary
Section 4: R2DBC vs JPA/JDBC
Lecture 34 Introduction
Lecture 35 [Performance Test] Throughput / Efficiency
Lecture 36 How R2DBC Works
Lecture 37 FAQ - Can I Use Spring Data JPA?
Lecture 38 Reactive Manifesto
Section 5: Reactive CRUD APIs
Lecture 39 Introduction
Lecture 40 FAQ - Do We Need DTOs?
Lecture 41 DTO / Entity / Repository
Lecture 42 Service Class Implementation
Lecture 43 Controller
Lecture 44 FAQ - @RequestBody Mono vs T
Lecture 45 CRUD APIs Demo
Lecture 46 Mono/Flux - Response Entity
Lecture 47 Handling 4XX via Response Entity
Lecture 48 @Modifying Query
Lecture 49 Paginated Results
Lecture 50 CRUD APIs Demo
Lecture 51 WebTestClient - Introduction
Lecture 52 Integration Testing - Part 1
Lecture 53 Integration Testing - Part 2
Lecture 54 Integration Testing - Part 3
Lecture 55 POST / PUT - Body Publisher vs Body Value
Lecture 56 Summary
Section 6: Input Validation / Error Handling
Lecture 57 Problem Detail
Lecture 58 What About Bean Validation?
Lecture 59 Project Setup
Lecture 60 Application Exceptions
Lecture 61 Request Validator
Lecture 62 Validation - Emitting Error Signal
Lecture 63 @ControllerAdvice
Lecture 64 Demo via Postman
Lecture 65 *** Assignment ***
Lecture 66 Integration Tests
Lecture 67 Summary
Section 7: WebFilter
Lecture 68 Introduction
Lecture 69 WebFilter Chain - How It Works
Lecture 70 Authentication & Authorization Requirements
Lecture 71 WebFilter Implementation
Lecture 72 Attributes via WebFilter
Lecture 73 WebFilter Demo
Lecture 74 Accessing Attributes via @Controller
Lecture 75 Problem Detail - WebFilter Workaround
Lecture 76 *** Assignment ***
Lecture 77 Integration Tests
Lecture 78 Summary
Section 8: Functional Endpoints
Lecture 79 Introduction
Lecture 80 Router Configuration - Part 1
Lecture 81 Request Handler
Lecture 82 Router Configuration - Part 2
Lecture 83 Input Validation / Error Handler
Lecture 84 Paginated Results
Lecture 85 Order Of The Routes
Lecture 86 Demo via Postman
Lecture 87 Integration Tests
Lecture 88 Multiple Router Functions
Lecture 89 Nested Router Functions
Lecture 90 What About WebFilters
Lecture 91 Request Predicates
Lecture 92 *** Assignment ***
Lecture 93 Functional / Request Predicates - Assignment Solution
Lecture 94 Summary
Section 9: WebClient - Non-Blocking HTTP Client
Lecture 95 Introduction
Lecture 96 Project Setup
Lecture 97 Simple GET
Lecture 98 Non-blocking Concurrent Requests
Lecture 99 [Optional] - How Event Loop Works
Lecture 100 URI Variables
Lecture 101 Streaming GET
Lecture 102 POST - Body Publisher vs Body Value
Lecture 103 Default Headers Configuration / Override
Lecture 104 Remote Service - Error Handling
Lecture 105 Retrieve / Exchange
Lecture 106 Query Params
Lecture 107 Basic Auth
Lecture 108 Bearer Auth
Lecture 109 Exchange Filter Function
Lecture 110 *** Assignment ***
Lecture 111 WebClient Attributes
Lecture 112 Summary
Section 10: Streaming
Lecture 113 Introduction
Lecture 114 Uploading Million Products - Usecase
Lecture 115 JSON Lines
Lecture 116 Project Setup
Lecture 117 Product Service
Lecture 118 Product Streaming Upload API
Lecture 119 Product Client
Lecture 120 Client Streaming Request - Demo
Lecture 121 @RequestBody - Non-Blocking Clarification
Lecture 122 1 Million Products Upload - Demo
Lecture 123 *** Assignment *** - Download API
Lecture 124 *** Resource *** - FileWriter
Lecture 125 1 Million Products Download - Demo
Lecture 126 What About Bidirectional Stream
Lecture 127 Summary
Section 11: Server Sent Events / SSE
Lecture 128 Introduction
Lecture 129 Sink Configuration
Lecture 130 Emitting Items via Sink
Lecture 131 Exposing Streaming API
Lecture 132 SSE Demo
Lecture 133 Price Filter Implementation
Lecture 134 *** Resource *** - Index HTML
Lecture 135 Adding UI
Lecture 136 Price Filter Demo via UI
Lecture 137 Integration Tests
Section 12: Performance Optimization
Lecture 138 Introduction
Lecture 139 gzip
Lecture 140 *** Resource *** - gzip Properties
Lecture 141 Enabling gzip
Lecture 142 gzip Demo
Lecture 143 Keep Alive / Connection Pooling
Lecture 144 Keep Alive / Connection Pooling - Project Setup
Lecture 145 *** Resource *** - Netstat Command
Lecture 146 HTTP Connections via netstat
Lecture 147 Configuring Connection Pool Size
Lecture 148 Pool Size Calculation
Lecture 149 SocketException - Too Many Open Files Issue
Lecture 150 HTTP2 Introduction
Lecture 151 HTTP2 - Demo
Lecture 152 SubscribeOn - For Blocking IO
Lecture 153 Summary
Section 13: Final Project - Reactive Microservices
Lecture 154 Trading Platform - Introduction
Lecture 155 [Customer Portfolio] - *** Resource *** - Database Initialization Scripts
Lecture 156 [Customer Portfolio] - Requirements Discussion
Lecture 157 [Customer Portfolio] - Project Setup
Lecture 158 [Customer Portfolio] - DTO / Entity / Repository
Lecture 159 [Customer Portfolio] - Application Exceptions
Lecture 160 [Customer Portfolio] - Customer Information Service
Lecture 161 [Customer Portfolio] - Trade Buy Request Handler
Lecture 162 [Customer Portfolio] - Trade Sell Request Handler
Lecture 163 [Customer Portfolio] - Controller
Lecture 164 [Customer Portfolio] - Exception Handler
Lecture 165 [Customer Portfolio] - Integration Tests - Part 1
Lecture 166 @Transactional - H2 DB Warning
Lecture 167 [Customer Portfolio] - Integration Tests - Part 2
Lecture 168 [Aggregator] - Introduction
Lecture 169 [Aggregator] - Project Setup
Lecture 170 [Aggregator] - Request Validator
Lecture 171 [Aggregator] - Stock Service Client
Lecture 172 [Aggregator] - Hot Price Stream
Lecture 173 [Aggregator] - Customer Service Client
Lecture 174 [Aggregator] - Customer Portfolio Service
Lecture 175 [Aggregator] - Exposing Trade Platform APIs
Lecture 176 [Aggregator] - @ControllerAdvice
Lecture 177 [Aggregator] - Configuration
Lecture 178 MockServer - Introduction
Lecture 179 *** Resource *** - MockServer Dependency
Lecture 180 [Aggregator] - Integration Test - Setup
Lecture 181 [Aggregator] - Mocking Customer Service
Lecture 182 [Aggregator] - Integration Tests - Customer Information API Test
Lecture 183 [Aggregator] - Integration Tests - Stock Service Stream API Test
Lecture 184 [Aggregator] - Integration Tests - Customer Trade API Test
Lecture 185 Demo via Postman
Lecture 186 *** Resource **** - Index HTML
Lecture 187 Trading Platform - Final Demo
Section 14: What's Next?
Lecture 188 What's Next?
Lecture 189 Reactive Course Series
Section 15: Bonus Section / Articles
Lecture 190 R2DBC - Entity Callback
Lecture 191 Spring WebFlux - File Upload Example
Lecture 192 Spring WebFlux Security
Any Developer / Architect who is interested in Microservice Development / Architecture with WebFlux