|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/reactive-programming-in-modern-java-using-project-reactor/
课程评论:没有评论
课程名称:使用 Project Reactor 的现代 Java 响应式编程 课程概述:响应式编程是一种新的编程范式,非常适合处理在高负载下要求性能更好的应用程序。该课程基于响应式流规范,Project Reactor 是响应式流规范的实现。使用响应式编程编写的代码具有以下特点:根本异步、非阻塞、函数式编程风格、支持反压。该课程旨在提供关于使用 Project Reactor 进行响应式编程的理论和实践知识,完全以动手实践为主,所有概念通过编写代码进行讲解。 课程内容: 1. **课程介绍**:概述课程目标及所需前置知识。 2. **响应式编程简介**:介绍响应式编程和相关概念,探讨其必要性。 3. **Project Reactor 入门**:介绍响应式库 Project Reactor,及其基础类型 Flux 和 Mono。 4. **项目设置**:设置本课程将使用的基础项目。 5. **现代 Java 中的函数式编程**:解释函数式编程及其优势。 6. **首次创建 Flux 和 Mono**:通过简单示例展示如何编码和解释 Flux 和 Mono。 7. **转换 Flux 和 Mono**:编码和说明如何使用不同的操作符对数据进行转换。 8. **组合 Flux 和 Mono**:介绍不同操作符组合响应式流。 9. **构建电影响应式服务**:运用所学技能构建一个响应式电影服务。 10. **doOn* 回调**:查看发布者发出的个别事件。 11. **Flux 和 Mono 中的异常/错误处理**:讲解不同的异常处理策略。 12. **在电影响应式服务中实现异常处理**:实现异常处理逻辑。 13. **重试与重复**:实现不同的重试技术。 14. **反应器执行模型**:解释项目反应器的线程与执行模型。 15. **在电影响应式服务中进行阻塞调用**:在管道中添加阻塞调用的增强。 16. **反压**:介绍反压概念及其实现。 17. **探索 Project Reactor 中的数据并行性**:引入并行性到响应式管道中。 18. **冷流与热流**:解释响应式编程中的冷流与热流。 19. **使用 VirtualTimeScheduler 进行 JUnit 测试**:讲解如何使用虚拟计时器减少测试执行时间。 20. **构建非阻塞的 RestClient**:使用 Spring WebClient 编写非阻塞的 RestClient。 21. **以编程方式创建 Flux**:介绍创建 Flux 的技术。 22. **Project Reactor 中的调试**:演示错误消息调试的不同方法。 通过本课程,您将全面理解响应式编程,能够使用响应式编程原则编写代码,并了解在何时将在项目中应用这些原则。
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 part of this section:Reactor Execution ModelSwitching Threads using publishOn()Switching Threads using subscribeOn()Section 15: Making Blocking Calls in MovieReactiveServiceIn this section, we will add an enhancement to the MoviesReactive Service by adding a blocking call in to the pipeline.Making Blocking calls in MovieReactiveService In this lecture, we will code and learn about how to make blocking calls using project reactorSection 16: BackPressureIn this section, I will explain the concept of backpressure in reactive programmingThe following topics are covered as part of this section:Introduction to BackPressureLet's implement BackPressureWrite a JUnit test for BackPressureHandling Backpressure using onBackpressureDrop()Handling Backpressure using onBackpressureBuffer()Handling Backpressure using onBackpressureError()Section 17: Explore Data Parallelism in Project ReactorIn this section, I will explain about introducing parallelism into the reactive pipelineThe following topics are covered as part of this section:Parallelism using parallel() and runOn() operatorsParallelism using flatmap() operatorParallelism using flatMapSequential() operatorSection 18: Cold & Hot StreamsIn this section, I will explain about cold and hot streams in Reactive ProgrammingThe following topics are covered as part of this section:Cold & Hot StreamsCold StreamsHot Streams - ConnectableFlux and different optionsSection 19: JUnit Testing using VirtualTimeSchedulerIn this section, I will explain the use of VirtualTimer to decrease the execution time of test cases.StepVerifier using VirtualTimeSchedulerSection 20: Build NonBlocking RestClient using WebClientIn this section, we will write a nonblocking rest client using Spring WebClientThe following topics are covered as part of this section:Overview of the Reactive Movie APIBuild the non-blocking MovieInfoService RestClientBuild the non-blocking Review RestClientBuild getAllMovies non-blocking MovieReactiveService ClientBuild getMovieById non-blocking MovieReactiveService ClientIntegrate WireMock for Integration TestsSection 21: Programmatically Creating a FluxIn this section, I will code and explain the techniques that are available to create a flux programmatically.The following topics are covered as part of this section:Create a Flux using create()Create a Flux using push()Section 22: Debugging in Project ReactorIn this section, I will demonstrate different approaches that are available when it comes to debugging reactor error messages.The following topics are covered as part of this section:Debug Exceptions using "checkpoint" operatorsDebug Exceptions using Hooks.onOperatorDebug()Production-ready Global Debugging using "ReactorDebugAgent"By the end of this course, you will have a complete understanding of Reactive Programming, write code using the Reactive Programming Principles, and when to use them in your project.