Reactive Programming is a new programming paradigm that’s well suited for applications that are required to perform better under heavy load. Reactive Programming is built on the foundation of reactive streams specification. Project Reactor is an implementation of Reactive Streams Specification. Code that’s written using Reactive programming has these qualities: Fundamentally AsynchronousNon BlockingFunctional Programming Style of codeBackpressure supportThis course is designed to provide both theoretical and practical knowledge about reactive programming using Project Reactor. This is a pure hands-on oriented course and all the concepts are explained by writing code. Course Curriculum: Section 1: Getting Started With the CourseThis section covers the course objectives and the prerequisites that are needed to make the most out of this course. Section 2: Introduction to Reactive ProgrammingIn this section, I will introduce you to reactive programming and its related concepts. The following topics are covered in this sectionWhy Reactive Programming?What is Reactive Programming?Introduction to Reactive StreamsSection 3: Getting Started with Project ReactorIn this section, I will introduce you to the reactive library project reactor, and the reactive types Flux and Mono that forms the foundation for Project ReactorIntroduction to Project ReactorReactor Reactive Types - Flux and MonoSection 4: Setting up the Project for this courseIn this section, I will set up the base project that will be used for the rest of this course. Section 5: Functional Programming in Modern JavaIn this section, I will explain Functional Programming and the benefits that are tied with this programming styleImperative Style vs Functional StyleSection 6: Let’s create our very first Flux and MonoIn this section, I will code and explain the reactor types Flux and Mono using simple examplesThe following topics are covered as part of this lecture: Let’s write our very first FluxLet’s write our very first MonoReactive Stream EventsTesting Flux using JUnit5Section 7: Transforming Flux and MonoIn this section, I will code and explain different operators that can be used to transform data from one form to another using project reactorThe following topics are covered as part of this section: Transforming Data Using Operators in Project ReactorTransform using map() OperatorReactive Streams are ImmutableFilter using filter() Operator Advanced transform using the flatMap() OperatorAsynchronous Operations using flatMap() OperatorAdvanced transform using the concatMap() OperatorflatMap( ) operator in MonoflatMapMany( ) operator in MonoTransform using the transform() OperatorHandling empty data using defaultIfEmpty and switchIfEmpty() OperatorsSection 8: Combining Flux and MonoIn this section, I will code and explain different operators that can be used to combine the reactive streams using project reactorThe following topics are covered as part of this section: Introduction to Combining Reactive StreamsCombining Reactive Streams using merge() and mergeWith() OperatorsCombining Reactive Streams using mergeSequential() OperatorsCombining Reactive Streams using zip and zipWith() OperatorsSection 9: Build Movie ReactiveService using Project ReactorIn this section, we will build the Reactive MovieService using all the skills that we have acquired so farOverview of this MovieServiceRetrieve all of the MovieInfoRetrieve MovieInfo by movieIdSection 10: doOn* CallBacks - Peeking into a SequenceIn this section, I will code and explain the techniques to peek into the individual events that’s emitted by the publisherSection 11: Exception/Error Handling in Flux and MonoIn this section, I will cover the different exception handling strategies that are part of the Project reactorThe following topics are covered as part of this section: Exceptions in Reactive Streams Introduction to Exception Handling OperatorsonErrorReturn() : Exception Handling OperatoronErrorResume() : Exception Handling OperatoronErrorContinue() : Exception Handling OperatoronErrorMap() : Exception Handling OperatordoOnError() : Catching Exceptions and Throw the errorError Handling Operators in MonoSection 12: Implement Exception Handling in Movies Reactive ServiceIn this section, I will implement the exception handling in the MoviesReactiveService. Exception Handling in MoviesReactiveService using onErrorMapTest Exception in MoviesReactiveService using MockitoSection 13: Retry, Repeat using retry(), retryWhen(), repeat()In this section, I will code and implement different techniques to retry the exceptions in the Reactive Streams using Project ReactorThe following topics are covered as part of this section: Retry Exceptions using retry() and retry(n)Retry Specific Exceptions using retryWhen()Repeat a Sequence using repeat() and repeat(n)Repeat a Sequence repeatWhen()Section 14: Reactors Execution Model - Schedulers, Threads, and ThreadpoolIn this section, I will explain the threads and the execution model behind the project reactorThe following topics are covered as p