{"id":5918,"date":"2024-04-24T19:40:03","date_gmt":"2024-04-24T16:40:03","guid":{"rendered":"https:\/\/rss.eground-zerkalo.com\/?p=5918"},"modified":"2024-04-24T19:40:03","modified_gmt":"2024-04-24T16:40:03","slug":"build-reactive-microservices-using-spring-webflux-springboot-udemy-pragmatic-code-school","status":"publish","type":"post","link":"https:\/\/rss.eground-zerkalo.com\/?p=5918","title":{"rendered":"Build Reactive MicroServices using Spring WebFlux\/SpringBoot [Udemy] [Pragmatic Code School]"},"content":{"rendered":"<h2 class=\"\">Build Reactive MicroServices using Spring WebFlux\/SpringBoot [Udemy] [Pragmatic Code School]<\/h2>\n<p> \t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/v14.skladchik.org\/attachments\/webflux1-jpg.1008147\/\" class=\"bbCodeImage LbImage\" alt=\"webflux1.jpg\" \/> \t\t <\/p>\n<p> <b>\u042f\u0437\u044b\u043a \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439<\/b><\/p>\n<p> <b>\u0427\u0435\u043c\u0443 \u0432\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c<\/b> <\/p>\n<ul>\n<li>\u041a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0438\u0442\u044c \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435?<\/li>\n<li>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435?<\/li>\n<li>\u0420\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Project Reactor<\/li>\n<li>\u041d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0411\u0414<\/li>\n<li>\u041d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Spring<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 API \u0441 \u043d\u0443\u043b\u044f<\/li>\n<li>\u041d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WebClient.<\/li>\n<li>\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043a\u0432\u043e\u0437\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c JUNIT \u0434\u043b\u044f Reactive API.<\/li>\n<\/ul>\n<p><b>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f<\/b> <\/p>\n<ul>\n<li>\u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 JDK 8<\/li>\n<li>\u041b\u044e\u0431\u0430\u044f \u0438\u0437 IDE, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 IntelliJ, Eclipse \u0438 \u0442. \u0434.,<\/li>\n<li>\u0417\u043d\u0430\u043d\u0438\u0435 Spring Boot \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0442\u0434\u0430\u0447\u0443 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u0430.<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e\u0442 \u043a\u0443\u0440\u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0432\u0430\u043c \u043a\u0430\u043a \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0441\u043f\u0435\u043a\u0442, \u0442\u0430\u043a \u0438 \u0430\u0441\u043f\u0435\u043a\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 API-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 Reactive RestFul \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Spring WebFlux .<\/p>\n<p>     \t\u0421\u043f\u043e\u0439\u043b\u0435\u0440: \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \tThis course is structured to give you both the theoretical and coding aspect of <b>Reactive Programming<\/b> and <b>Reactive RestFul APIs using Spring WebFlux<\/b>.<\/p>\n<p> If you are looking forward to learn the below listed things: <\/p>\n<ul>\n<li><b>What is Reactive Programming?<\/b><\/li>\n<li>Write <b>Reactive Programming code with Spring WebFlux.<\/b><\/li>\n<li>Write <b>Reactive Programming code with DB.<\/b><\/li>\n<li>Building <b>Reactive RestFul APIs with Spring WebFlux<\/b><\/li>\n<\/ul>\n<p>Then this is the right course for you. This is a pure hands on oriented course where you will be writing lots of code.<\/p>\n<p> By the end of this course you will have the complete understanding of coding and implementing a <b>Reactive API using Spring WebFlux<\/b>.<\/p>\n<p> <b>Why Reactive Programming ?<\/b> <\/p>\n<ul>\n<li>This section highlights about the need for reactive programming and explains in detail about the current execution model in <b>spring-mvc<\/b>.<\/li>\n<li>This sections explains about the drawbacks in spring-mvc.<\/li>\n<li>This section explains about the concurrency model in spring-mvc.<\/li>\n<\/ul>\n<p> <b>What is Reactive Programming?<\/b> <\/p>\n<ul>\n<li>This section talks about &quot;<b>What is Reactive Programming ?&quot;<\/b><\/li>\n<li>How Reactive programming works in a nutshell using a simple example.<\/li>\n<li>This section will give you all an introduction to <b>Reactive Streams Specification<\/b>.<\/li>\n<li>This section will give all an introduction to <b>&quot;Reactive Libraries&quot;<\/b> that are out there.<\/li>\n<\/ul>\n<p><b>Getting started with Project Reactor<\/b> <\/p>\n<ul>\n<li>This section will give you all the fundamentals of <b>Project Reactor<\/b> and explore the project reactor using some examples.<\/li>\n<li>This section covers the Reactive Types <b>Flux<\/b> and <b>Mono<\/b> in detail.<\/li>\n<\/ul>\n<p><b>Setting up the Project for this course<\/b> <\/p>\n<ul>\n<li>In this section we will set up the project for this course using the <b>Spring Intializr<\/b> website.<\/li>\n<\/ul>\n<p><b>Reactive Programming (Flux and Mono) &#8212; Hands on + Junit Testing<\/b> <\/p>\n<ul>\n<li>In this section we will explore about how Flux and Mono works via code.<\/li>\n<li>We will do live coding on how to write Junit test cases using Flux and Mono.<\/li>\n<li>We will explore lot of different operators in Flux and Mono.<\/li>\n<\/ul>\n<p><b>Build the first Non Blocking RESTFUL API using Annotated Controllers &#8212; Hands On<\/b> <\/p>\n<ul>\n<li>In this section we will build the first non blocking API using the annotated controllers.<\/li>\n<li>This section covers the fundamentals of how the reactive API works.<\/li>\n<li>This sections also covers the coding aspect of how to return a <b>Flux\/Mono<\/b> from an end point.<\/li>\n<li>This section also covers how to write JUNIT test cases using <b>WebTestClient<\/b>.<\/li>\n<\/ul>\n<p><b>Build Non Blocking RESTFUL API using Functional Web &#8212; Hands On<\/b> <\/p>\n<ul>\n<li>In this section we will build the non blocking API using the Functional Web Module.<\/li>\n<li>This sections explains about the <b>RouterFunction<\/b> and <b>HandlerFunction<\/b> which forms the foundation for Function Web Module.<\/li>\n<li>This section also covers how to write JUNIT test cases using <b>WebTestClient<\/b>.<\/li>\n<\/ul>\n<p><b>Spring WebFlux &amp; Netty &#8212; Execution Model<\/b> <\/p>\n<ul>\n<li>This section explains about the different layers behind WebFlux to serve a <b>HTTP Request\/Response<\/b>.<\/li>\n<li>This sections covers the concepts of <b>NETTY<\/b> such as <b>Channel<\/b>, <b>EventLoop<\/b> and some of the technical aspects of <b>Netty<\/b>.<\/li>\n<\/ul>\n<p><b>Overview of the Reactive API<\/b> <\/p>\n<ul>\n<li>This section will give you an <b>Overview of the Reactive API<\/b> that we are going to build as part of this course.<\/li>\n<\/ul>\n<p><b>Reactive Programming in Databases &#8212; MongoDB &#8212; Hands On<\/b> <\/p>\n<ul>\n<li>In this section we will learn about how to write the reactive programming code with MongoDB.<\/li>\n<li>Define the Item Document for the project.<\/li>\n<li>This section covers about how to configure different profiles in Spring Boot.<\/li>\n<li>In this section we will set up the <b>ItemReactive Mongo DB<\/b> adapter.<\/li>\n<li>This section also covers how to write <b>JUNIT<\/b> test cases for the reactive repository.<\/li>\n<\/ul>\n<p><b>Build the Item Reactive API Endpoint &#8212; Using RestController<\/b> <\/p>\n<ul>\n<li>In this section we will learn about how to code the Item <b>CRUD<\/b> Reactive API using the <b>@RestController<\/b> approach.<\/li>\n<li>This section also covers how to write automated tests using <b>JUNIT<\/b> and the non blocking test client <b>WebTestClient<\/b>.<\/li>\n<\/ul>\n<p><b>Build the Item Reactive API Endpoint &#8212; Using Functional Web<\/b> <\/p>\n<ul>\n<li>In this section we will learn about how to code the Item <b>CRUD<\/b> Reactive API using the <b>Functional Web<\/b> approach.<\/li>\n<li>This section also covers how to write automated tests using <b>JUNIT<\/b> and the non blocking test client <b>WebTestClient<\/b>.<\/li>\n<\/ul>\n<p><b>Build Non Blocking Client using WebClient<\/b> <\/p>\n<ul>\n<li>In this section we will explore the techniques to interact with <b>Reactive API using the WebClient<\/b>.<\/li>\n<li>Learn the techniques to Invoke the Reactive API using <b>exchange()<\/b> and <b>retrieve() <\/b>methods.<\/li>\n<li>We will explore the <b>GET, PUT, POST <\/b>and <b>DELETE<\/b> operations using the <b>WebClient<\/b>.<\/li>\n<\/ul>\n<p><b>Handling Exceptions in WebFlux &#8212; RestController<\/b> <\/p>\n<ul>\n<li>In this section we will code and explore different approaches to handle the exceptions\/errors that occurs in the reactive api that\u2019s built using <b>RestController<\/b>.<\/li>\n<li>Handle exceptions using <b>@ExceptionHandler<\/b> and <b>@ControllerAdvice<\/b>.<\/li>\n<li>This section also covers how to write <b>JUNIT<\/b> test cases for the <b>Exception<\/b> scenarios.<\/li>\n<\/ul>\n<p><b>Handling Exceptions in WebFlux &#8212; Functional Web<\/b> <\/p>\n<ul>\n<li>In this section we will code and explore different approaches to handle the exceptions\/errors that occurs in the reactive api that\u2019s built using <b>Functional Web<\/b>.<\/li>\n<li>Handle exceptions using <b>WebExceptionHandler<\/b>.<\/li>\n<li>This section also covers how to write <b>JUNIT<\/b> test cases for the <b>Exception<\/b> scenarios.<\/li>\n<\/ul>\n<p><b>WebClient &#8212; Exception Handling<\/b> <\/p>\n<ul>\n<li>In this section we will code and explore how to handle the exceptions using the <b>WebClient<\/b>.<\/li>\n<li>Learn the techniques to handle the exceptions using <b>exchange()<\/b> and <b>retrieve() <\/b>methods.<\/li>\n<\/ul>\n<p><b>Streaming Real Time Data using WebFlux &#8212; Server Side Events (SSE)<\/b> <\/p>\n<ul>\n<li>In this section we will code and learn about build an endpoint for <b>Streaming RealTime Data using Mongo DB <\/b>and <b>Spring WebFlux<\/b>.<\/li>\n<li>This section covers about the <b>Tailable Cursors<\/b> and <b>Capped Collections<\/b> in <b>Mongo DB<\/b>.<\/li>\n<li>Build a <b>Non Blocking Streaming Endpoint<\/b> and interact with the Mongo DB using the <b>@Tailable<\/b> annotation.<\/li>\n<li>Learn to write Automated Tests using <b>JUNIT<\/b> for the <b>Streaming Endpoints (SSE)<\/b>.<\/li>\n<\/ul>\n<p> \u0426\u0435\u043d\u0430 1000 \u0440\u0443\u0431<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Build Reactive MicroServices using Spring WebFlux\/SpringBoot [Udemy] [Pragmatic Code School] \u042f\u0437\u044b\u043a \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0427\u0435\u043c\u0443 \u0432\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c \u041a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0438\u0442\u044c \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435? \u0420\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Project Reactor \u041d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0411\u0414 \u041d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Spring \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 API \u0441 \u043d\u0443\u043b\u044f \u041d\u0430\u0443\u0447\u0438\u0442\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-5918","post","type-post","status-publish","format-standard","hentry","category-rss"],"_links":{"self":[{"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/posts\/5918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5918"}],"version-history":[{"count":0,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=\/wp\/v2\/posts\/5918\/revisions"}],"wp:attachment":[{"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rss.eground-zerkalo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}