SlideShare una empresa de Scribd logo
Meetup Spring Madrid - WebFlux
Spring WebFlux
Meetup Spring Madrid - WebFlux
Grupo de meetup de Spring Madrid
¡ Bienvenidos !
Meetup Spring Madrid - WebFlux
BIO
Arquitecto Software @ ParadigmaDigital
alberto.grande@gmail.com
@alberto_grande
Meetup Spring Madrid - WebFlux
Programación Reactiva
“
In computing, reactive programming is a
declarative programming paradigm
concerned with data streams and the
propagation of change.
”
https://www.reactivemanifesto.org/
Meetup Spring Madrid - WebFlux
Reactive Streams
Publisher
También llamados Observables. Estos objetos son los que emiten el
flujo de datos
Subscriber
También llamados Observers. Estos objetos son a los que se les
notifican los cambios en el flujo de datos que emite el Publisher
Subscription
Una suscripción se creará en el lado del ‘Publisher’ y se compartirá
con el ‘Subscriber’
Processor
Un procesador puede ser utilizado entre el ‘Publisher’ y el
‘Subscriber’ para realizar transformaciones
La especificación de ‘Reactive Stream’ es un estándar y desde Java 9
se incluye en el Flow API
Programación Reactiva - Conceptos
Meetup Spring Madrid - WebFlux
Es un proyecto que se basa en la especificación de
‘Reactive Stream’ proporcionando una
implementación.
Proporciona dos tipos:
Mono: implementa un Publisher y devuelve 0 o 1
elementos
Flux: implementa un Publisher y devuelve N elementos
En RxJava serían un Flowable o Observable (en función
de la versión)
Project Reactor
¿Qué es?
Meetup Spring Madrid - WebFlux
La nueva versión de Spring 5 trae soporte para la
programación reactiva mediante el nuevo módulo
llamado WebFlux.
WebFlux a su vez toma como base la librería del
proyecto Reactor (https://projectreactor.io).
WebFlux permite su uso a través de anotaciones (de
forma similar al modelo de programación de Spring
Web MVC) o de forma funcional (programática)
Spring WebFlux
¿Qué es?
Editar el estilo de texto del patrón
Ejemplo
Meetup Spring Madrid - WebFlux
Spring WebFlux - Ejemplo
DB
Controller
Repository
Model
Meetup Spring Madrid - WebFlux
Spring WebFlux - Ejemplo
MongoDB
MessageController
@RestController
MessageRepository
extends ReactiveMongoRepository
Message
@Document
Meetup Spring Madrid - WebFlux
Spring WebFlux - Ejemplo
Meetup Spring Madrid - WebFlux
Spring WebFlux - Ejemplo
pom.xml
Meetup Spring Madrid - WebFlux
Spring WebFlux - Ejemplo
pom.xml
Meetup Spring Madrid - WebFlux
Spring WebFlux - Ejemplo
modelo
Meetup Spring Madrid - WebFlux
Spring WebFlux - Ejemplo
repository
Meetup Spring Madrid - WebFlux
Spring WebFlux - Ejemplo
controller
Editar el estilo de texto del patrón
Spring MVC y Spring WebFlux
Meetup Spring Madrid - WebFlux
Spring WebFlux
Spring MVC Spring WebFlux
Reactive Web API
Reactor, Reactive Streams
Servlet API
Tomcat, Jetty Netty Tomcat, Jetty
Blocking I/O Non - Blocking I/O
Ref: Juergen Hoeller
Meetup Spring Madrid - WebFlux
Spring WebFlux
Spring MVC Spring WebFlux
Reactive Web API
Reactor, Reactive Streams
Servlet API
Tomcat, Jetty Netty Tomcat, Jetty
Blocking I/O Non - Blocking I/O
Ref: Juergen Hoeller
1 Thread gestiona toda
llamada, quedando
bloqueado hasta que esta
termina produciendo la
respuesta.
Trabaja con un pool de
threads esperando a recibir
peticiones
Meetup Spring Madrid - WebFlux
Spring WebFlux
Spring MVC Spring WebFlux
Reactive Web API
Reactor, Reactive Streams
Servlet API
Tomcat, Jetty Netty Tomcat, Jetty
Blocking I/O Non - Blocking I/O
Ref: Juergen Hoeller
1 Thread gestiona toda
llamada, quedando
bloqueado hasta que esta
termina produciendo la
respuesta.
Trabaja con un pool de
threads esperando a recibir
peticiones
Idóneo si el ‘sistema de
almacenamiento’ es
bloqueante
Llamadas no bloqueantes
Modelo de concurrencia
‘event loop’
Endpoints funcionales
Idóneo si el ‘sistema de
almacenamiento’ es NO
bloqueante
Meetup Spring Madrid - WebFlux
Spring WebFlux
@Controller, @RestController
Spring MVC Spring WebFlux
Reactive Web API
Reactor, Reactive Streams
Servlet API
Tomcat, Jetty Netty Tomcat, Jetty
Blocking I/O Non - Blocking I/O
Ref: Juergen Hoeller
Meetup Spring Madrid - WebFlux
Spring WebFlux
@Controller, @RestController
Spring MVC Spring WebFlux
Reactive Web API
Reactor, Reactive Streams
Servlet API
Tomcat, Jetty Netty Tomcat, Jetty
Blocking I/O Non - Blocking I/O
Ref: Juergen Hoeller
Router
functions
Meetup Spring Madrid - WebFlux
Spring WebFlux
Spring MVC
Meetup Spring Madrid - WebFlux
Spring WebFlux
Spring WebFlux
Meetup Spring Madrid - WebFlux
Spring WebFlux
Meetup Spring Madrid - WebFlux
Spring WebFlux
El entorno de ejecución recoge una petición que hace
‘match’ con la URL especificada y la envía al
manejador de la petición
Meetup Spring Madrid - WebFlux
Spring WebFlux
El entorno de ejecución recoge una petición que hace
‘match’ con la URL especificada y la envía al
manejador de la petición
Se pasan los parámetros al método del repositorio que
devuelve un ‘Publisher’ para el objeto ‘Message’ si es
posible producirlo
Meetup Spring Madrid - WebFlux
Spring WebFlux
Meetup Spring Madrid - WebFlux
Spring WebFlux
Llega una petición
t
Meetup Spring Madrid - WebFlux
Spring WebFlux
Llega una petición
Se pasa al manejador
t
Meetup Spring Madrid - WebFlux
Spring WebFlux
Llega una petición
Se pasa al manejador
El manejador identifica los parámetros
t
Meetup Spring Madrid - WebFlux
Spring WebFlux
Llega una petición
Se pasa al manejador
El manejador identifica los parámetros
El manejador construye un pipeline para llegar al elemento Mensaje y lo devuelve.
Operación NO BLOQUEANTE
t
Meetup Spring Madrid - WebFlux
Spring WebFlux
Llega una petición
Se pasa al manejador
El manejador identifica los parámetros
El manejador construye un pipeline para llegar al elemento Mensaje y lo devuelve.
Operación NO BLOQUEANTE
El entorno de ejecución (en este caso el sistema de ‘event loop’ que proporciona WebFlux) se encarga de
registrar un Subscriber (crear una suscripción) al Publisher (el elemento Mono)
t
Meetup Spring Madrid - WebFlux
Spring WebFlux
Llega una petición
Se pasa al manejador
El manejador identifica los parámetros
El manejador construye un pipeline para llegar al elemento Mensaje y lo devuelve.
Operación NO BLOQUEANTE
El entorno de ejecución (en este caso el sistema de ‘event loop’ que proporciona WebFlux) se encarga de
registrar un Subscriber (crear una suscripción) al Publisher (el elemento Mono)
El Publisher (el elemento Mono) comienza a preguntar por el elemento ‘Message’
t
Meetup Spring Madrid - WebFlux
Spring WebFlux
Llega una petición
Se pasa al manejador
El manejador identifica los parámetros
El manejador construye un pipeline para llegar al elemento Mensaje y lo devuelve.
Operación NO BLOQUEANTE
El entorno de ejecución (en este caso el sistema de ‘event loop’ que proporciona WebFlux) se encarga de
registrar un Subscriber (crear una suscripción) al Publisher (el elemento Mono)
El Publisher (el elemento Mono) comienza a preguntar por el elemento ‘Message’
El Publisher recibirá el elemento siempre que sea posible producirlo y lo reenviará en la respuesta HTTP
t
Editar el estilo de texto del patrón
Spring WebFlux - Programación funcional
Meetup Spring Madrid - WebFlux
Spring WebFlux - Funcional
Spring WebFlux - Funcional
Meetup Spring Madrid - WebFlux
Spring WebFlux - Funcional
Spring WebFlux - Funcional
Meetup Spring Madrid - WebFlux
Spring WebFlux - Funcional - Lambdas
Spring WebFlux - Funcional - Lambdas
Editar el estilo de texto del patrón
Spring WebFlux - Server Sent Events
Meetup Spring Madrid - WebFlux
Spring WebFlux - Server Sent Events
API basada en HTTP para el envío de información push.
Permite al servidor enviar información al cliente
(comunicación en un único sentido)
¿Diferencia con los webSocket?
Los webSockets son un sistema de comunicación
basado en TCP que permite comunicación
bi-direccional entre cliente y servidor
¿Qué es?
Meetup Spring Madrid - WebFlux
Spring WebFlux - Server Sent Events
Spring WebFlux - Server Sent Events
Meetup Spring Madrid - WebFlux
Spring WebFlux - Server Sent Events
Spring WebFlux - Server Sent Events
Meetup Spring Madrid - WebFlux
Spring WebFlux - Server Sent Events
Cliente - Server Sent Events
Ref: www.w3schools.com
Editar el estilo de texto del patrón
Spring WebFlux - WebSockets
Meetup Spring Madrid - WebFlux
Spring WebFlux - WebSockets
Spring WebFlux - WebSockets
Editar el estilo de texto del patrón
Spring WebFlux - Cliente Reactivo
Meetup Spring Madrid - WebFlux
Spring WebFlux - Cliente reactivo
microservicio microservicio microservicio
microservicio
DB DB DB
Meetup Spring Madrid - WebFlux
Spring WebFlux - Cliente reactivo
microservicio microservicio microservicio
microservicio
DB DB DB
Non - Blocking I/O
Meetup Spring Madrid - WebFlux
Spring WebFlux - Cliente reactivo
microservicio microservicio microservicio
microservicio
DB DB DB
RestTemplate
Non - Blocking I/O
Blocking I/O
Meetup Spring Madrid - WebFlux
Spring WebFlux - Cliente reactivo
microservicio microservicio microservicio
microservicio
DB DB DB
WebClient
Non - Blocking I/O
Non - Blocking I/O
Meetup Spring Madrid - WebFlux
Spring WebFlux - Cliente reactivo
Spring WebFlux - Cliente reactivo
Editar el estilo de texto del patrón
Spring WebFlux - Testing
Meetup Spring Madrid - WebFlux
Spring WebFlux - Testing
Spring WebFlux - Testing
Editar el estilo de texto del patrón
Spring WebFlux - Resumen
Meetup Spring Madrid - WebFlux
Spring WebFlux - Conclusiones
● Creación de un proyecto con Spring WebFlux
● Diferencias entre Spring WebFlux y Spring MVC y sus respectivos stacks
● Flujo de trabajo
● Creación de servicios REST con Spring WebFlux
● Modelo de programación funcional
● Server Sent Events
● WebSockets
● Cliente reactivo
● Testing
Meetup Spring Madrid - WebFlux
Spring WebFlux - Conclusiones
Ref: https://medium.com/@the.raj.saxena
Rendimiento
Spring MVC Spring WebFlux
Spring MVC 1.5.10.RELEASE
Spring WebFlux 2.0.0.RELEASE
2500 users (4 requests/user)
Meetup Spring Madrid - WebFlux
Spring WebFlux - Conclusiones
Ref: https://medium.com/@the.raj.saxena
Rendimiento
Spring MVC Spring WebFlux
Spring MVC 1.5.10.RELEASE
Spring WebFlux 2.0.0.RELEASE
5000 users (4 requests/user)
Meetup Spring Madrid - WebFlux
Spring WebFlux - Conclusiones
Ref: https://medium.com/@the.raj.saxena
Rendimiento
Spring MVC Spring WebFlux
Spring MVC 1.5.10.RELEASE
Spring WebFlux 2.0.0.RELEASE
10000 users (4 requests/user)
We are hiring
people@paradigmadigital.com
Editar el estilo de texto del patrón
Concurso!
Meetup Spring Madrid - WebFlux
Grupo de meetup de Spring Madrid
https://kahoot.it/
Publicidad

Más contenido relacionado

La actualidad más candente (20)

今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k
Toshiaki Maki
 
SpringBoot 3 Observability
SpringBoot 3 ObservabilitySpringBoot 3 Observability
SpringBoot 3 Observability
Knoldus Inc.
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
Altinity Ltd
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Amazon Web Services Japan
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
Ji-Woong Choi
 
MySQL Server Settings Tuning
MySQL Server Settings TuningMySQL Server Settings Tuning
MySQL Server Settings Tuning
guest5ca94b
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
Toshiaki Maki
 
Message Queue 가용성, 신뢰성을 위한 RabbitMQ Server, Client 구성
Message Queue 가용성, 신뢰성을 위한 RabbitMQ Server, Client 구성Message Queue 가용성, 신뢰성을 위한 RabbitMQ Server, Client 구성
Message Queue 가용성, 신뢰성을 위한 RabbitMQ Server, Client 구성
Yoonjeong Kwon
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
Jo Hoon
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
 
MySQL Parallel Replication: inventory, use-case and limitations
MySQL Parallel Replication: inventory, use-case and limitationsMySQL Parallel Replication: inventory, use-case and limitations
MySQL Parallel Replication: inventory, use-case and limitations
Jean-François Gagné
 
How to Get Started With NGINX
How to Get Started With NGINXHow to Get Started With NGINX
How to Get Started With NGINX
NGINX, Inc.
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
NeoClova
 
오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기
Jaehwa Park
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
Ji-Woong Choi
 
Spring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWSSpring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWS
VMware Tanzu
 
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalkContinuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Thomas Shaw
 
The Modern Database for Enterprise Applications
The Modern Database for Enterprise ApplicationsThe Modern Database for Enterprise Applications
The Modern Database for Enterprise Applications
QAware GmbH
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
DaeMyung Kang
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
YoungHeon (Roy) Kim
 
今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k
Toshiaki Maki
 
SpringBoot 3 Observability
SpringBoot 3 ObservabilitySpringBoot 3 Observability
SpringBoot 3 Observability
Knoldus Inc.
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
Altinity Ltd
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Amazon Web Services Japan
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
Ji-Woong Choi
 
MySQL Server Settings Tuning
MySQL Server Settings TuningMySQL Server Settings Tuning
MySQL Server Settings Tuning
guest5ca94b
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
Toshiaki Maki
 
Message Queue 가용성, 신뢰성을 위한 RabbitMQ Server, Client 구성
Message Queue 가용성, 신뢰성을 위한 RabbitMQ Server, Client 구성Message Queue 가용성, 신뢰성을 위한 RabbitMQ Server, Client 구성
Message Queue 가용성, 신뢰성을 위한 RabbitMQ Server, Client 구성
Yoonjeong Kwon
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
Jo Hoon
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
 
MySQL Parallel Replication: inventory, use-case and limitations
MySQL Parallel Replication: inventory, use-case and limitationsMySQL Parallel Replication: inventory, use-case and limitations
MySQL Parallel Replication: inventory, use-case and limitations
Jean-François Gagné
 
How to Get Started With NGINX
How to Get Started With NGINXHow to Get Started With NGINX
How to Get Started With NGINX
NGINX, Inc.
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
NeoClova
 
오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기
Jaehwa Park
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
Ji-Woong Choi
 
Spring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWSSpring Boot on Amazon Web Services with Spring Cloud AWS
Spring Boot on Amazon Web Services with Spring Cloud AWS
VMware Tanzu
 
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalkContinuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Thomas Shaw
 
The Modern Database for Enterprise Applications
The Modern Database for Enterprise ApplicationsThe Modern Database for Enterprise Applications
The Modern Database for Enterprise Applications
QAware GmbH
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
DaeMyung Kang
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
YoungHeon (Roy) Kim
 

Similar a Programación Reactiva con Spring WebFlux (20)

5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
SibilinoAndante
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
Jose Juan R. Zuñiga
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
Alberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
Alberto Diaz Martin
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
hack221
 
UDA-Guia desarrollo web services
UDA-Guia desarrollo web servicesUDA-Guia desarrollo web services
UDA-Guia desarrollo web services
Ander Martinez
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
Rodolfo Finochietti
 
Linq to sql 6
Linq to sql 6Linq to sql 6
Linq to sql 6
jcfarit
 
Servicios web java, php, perl, google
Servicios web java, php, perl, googleServicios web java, php, perl, google
Servicios web java, php, perl, google
Octavio Izucar Martinez
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
Josue Cucaita Murcia
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
dtbadboy0
 
Servicios web
Servicios webServicios web
Servicios web
Cheli Hedz
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
Octavio Izucar Martinez
 
Presentacion sesion01 - Programacion WEB
Presentacion sesion01 - Programacion WEBPresentacion sesion01 - Programacion WEB
Presentacion sesion01 - Programacion WEB
ploncan24
 
Joserojas Web 2.0
Joserojas Web 2.0Joserojas Web 2.0
Joserojas Web 2.0
Jose Rojas
 
Introduccion aspnet
Introduccion aspnetIntroduccion aspnet
Introduccion aspnet
Adoniesis Serna Hinestroza
 
Introduccion aspnet
Introduccion aspnetIntroduccion aspnet
Introduccion aspnet
Fernando Sorto
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
pabloesp
 
CLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxCLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptx
DiseoGrfico14
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
Sergi Almar i Graupera
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
SibilinoAndante
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
Alberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
Alberto Diaz Martin
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
hack221
 
UDA-Guia desarrollo web services
UDA-Guia desarrollo web servicesUDA-Guia desarrollo web services
UDA-Guia desarrollo web services
Ander Martinez
 
Linq to sql 6
Linq to sql 6Linq to sql 6
Linq to sql 6
jcfarit
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
dtbadboy0
 
Presentacion sesion01 - Programacion WEB
Presentacion sesion01 - Programacion WEBPresentacion sesion01 - Programacion WEB
Presentacion sesion01 - Programacion WEB
ploncan24
 
Joserojas Web 2.0
Joserojas Web 2.0Joserojas Web 2.0
Joserojas Web 2.0
Jose Rojas
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
pabloesp
 
CLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxCLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptx
DiseoGrfico14
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
Sergi Almar i Graupera
 
Publicidad

Más de Paradigma Digital (20)

Ddd + ah + microservicios
Ddd + ah + microserviciosDdd + ah + microservicios
Ddd + ah + microservicios
Paradigma Digital
 
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Paradigma Digital
 
Have you met Istio?
Have you met Istio?Have you met Istio?
Have you met Istio?
Paradigma Digital
 
Linkerd a fondo
Linkerd a fondoLinkerd a fondo
Linkerd a fondo
Paradigma Digital
 
Horneando apis
Horneando apisHorneando apis
Horneando apis
Paradigma Digital
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
Paradigma Digital
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace Netflix
Paradigma Digital
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API Management
Paradigma Digital
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
Paradigma Digital
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Paradigma Digital
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microservicios
Paradigma Digital
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
Paradigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
Paradigma Digital
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
Paradigma Digital
 
Cómo usar google analytics
Cómo usar google analyticsCómo usar google analytics
Cómo usar google analytics
Paradigma Digital
 
Transformación Digital
Transformación DigitalTransformación Digital
Transformación Digital
Paradigma Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
Paradigma Digital
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
Paradigma Digital
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
Paradigma Digital
 
Python y Flink
Python y FlinkPython y Flink
Python y Flink
Paradigma Digital
 
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Paradigma Digital
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
Paradigma Digital
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace Netflix
Paradigma Digital
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API Management
Paradigma Digital
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
Paradigma Digital
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Paradigma Digital
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microservicios
Paradigma Digital
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
Paradigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
Paradigma Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
Paradigma Digital
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
Paradigma Digital
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
Paradigma Digital
 
Publicidad

Último (10)

La población española desde los años 60 hasta hoy-Chema y Ainhoa.pptx
La población española desde los años 60 hasta hoy-Chema y Ainhoa.pptxLa población española desde los años 60 hasta hoy-Chema y Ainhoa.pptx
La población española desde los años 60 hasta hoy-Chema y Ainhoa.pptx
carmonasanchezainhoa
 
CAS Almacenamiento direccionable por contenido.pptx
CAS Almacenamiento direccionable por contenido.pptxCAS Almacenamiento direccionable por contenido.pptx
CAS Almacenamiento direccionable por contenido.pptx
rn8nw842xp
 
SISTEMAS OPERATIVOS Y SUS DISTINTAS FUNCIONES
SISTEMAS OPERATIVOS Y SUS DISTINTAS FUNCIONESSISTEMAS OPERATIVOS Y SUS DISTINTAS FUNCIONES
SISTEMAS OPERATIVOS Y SUS DISTINTAS FUNCIONES
Nicole Bernal López
 
es solo una prueba para probar la carga de los archivos a la pagina
es solo una prueba para probar la carga de los archivos a la paginaes solo una prueba para probar la carga de los archivos a la pagina
es solo una prueba para probar la carga de los archivos a la pagina
Tob
 
Indexacion about sofware admin de arch.pptx
Indexacion about sofware admin de arch.pptxIndexacion about sofware admin de arch.pptx
Indexacion about sofware admin de arch.pptx
rn8nw842xp
 
Navegadores de Internet
Navegadores de InternetNavegadores de Internet
Navegadores de Internet
Jose Antonio Tapia Andalon
 
INFORMATICA2Planificacion BACHILLERATO..
INFORMATICA2Planificacion BACHILLERATO..INFORMATICA2Planificacion BACHILLERATO..
INFORMATICA2Planificacion BACHILLERATO..
luismoreira116786
 
Eutanasia, seccion A grupal.docxDDDDDDDDD
Eutanasia, seccion A grupal.docxDDDDDDDDDEutanasia, seccion A grupal.docxDDDDDDDDD
Eutanasia, seccion A grupal.docxDDDDDDDDD
EduardoHaider
 
sistemas operativos
sistemas  operativossistemas  operativos
sistemas operativos
jesusdaviddelgadoalm
 
0905-Directorio.pdf0@0×÷*÷>÷>×>÷>÷>×>×>*
0905-Directorio.pdf0@0×÷*÷>÷>×>÷>÷>×>×>*0905-Directorio.pdf0@0×÷*÷>÷>×>÷>÷>×>×>*
0905-Directorio.pdf0@0×÷*÷>÷>×>÷>÷>×>×>*
Kathycullen Zevallos Flores
 
La población española desde los años 60 hasta hoy-Chema y Ainhoa.pptx
La población española desde los años 60 hasta hoy-Chema y Ainhoa.pptxLa población española desde los años 60 hasta hoy-Chema y Ainhoa.pptx
La población española desde los años 60 hasta hoy-Chema y Ainhoa.pptx
carmonasanchezainhoa
 
CAS Almacenamiento direccionable por contenido.pptx
CAS Almacenamiento direccionable por contenido.pptxCAS Almacenamiento direccionable por contenido.pptx
CAS Almacenamiento direccionable por contenido.pptx
rn8nw842xp
 
SISTEMAS OPERATIVOS Y SUS DISTINTAS FUNCIONES
SISTEMAS OPERATIVOS Y SUS DISTINTAS FUNCIONESSISTEMAS OPERATIVOS Y SUS DISTINTAS FUNCIONES
SISTEMAS OPERATIVOS Y SUS DISTINTAS FUNCIONES
Nicole Bernal López
 
es solo una prueba para probar la carga de los archivos a la pagina
es solo una prueba para probar la carga de los archivos a la paginaes solo una prueba para probar la carga de los archivos a la pagina
es solo una prueba para probar la carga de los archivos a la pagina
Tob
 
Indexacion about sofware admin de arch.pptx
Indexacion about sofware admin de arch.pptxIndexacion about sofware admin de arch.pptx
Indexacion about sofware admin de arch.pptx
rn8nw842xp
 
INFORMATICA2Planificacion BACHILLERATO..
INFORMATICA2Planificacion BACHILLERATO..INFORMATICA2Planificacion BACHILLERATO..
INFORMATICA2Planificacion BACHILLERATO..
luismoreira116786
 
Eutanasia, seccion A grupal.docxDDDDDDDDD
Eutanasia, seccion A grupal.docxDDDDDDDDDEutanasia, seccion A grupal.docxDDDDDDDDD
Eutanasia, seccion A grupal.docxDDDDDDDDD
EduardoHaider
 
0905-Directorio.pdf0@0×÷*÷>÷>×>÷>÷>×>×>*
0905-Directorio.pdf0@0×÷*÷>÷>×>÷>÷>×>×>*0905-Directorio.pdf0@0×÷*÷>÷>×>÷>÷>×>×>*
0905-Directorio.pdf0@0×÷*÷>÷>×>÷>÷>×>×>*
Kathycullen Zevallos Flores
 

Programación Reactiva con Spring WebFlux

  • 1. Meetup Spring Madrid - WebFlux Spring WebFlux
  • 2. Meetup Spring Madrid - WebFlux Grupo de meetup de Spring Madrid ¡ Bienvenidos !
  • 3. Meetup Spring Madrid - WebFlux BIO Arquitecto Software @ ParadigmaDigital [email protected] @alberto_grande
  • 4. Meetup Spring Madrid - WebFlux Programación Reactiva “ In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. ” https://www.reactivemanifesto.org/
  • 5. Meetup Spring Madrid - WebFlux Reactive Streams Publisher También llamados Observables. Estos objetos son los que emiten el flujo de datos Subscriber También llamados Observers. Estos objetos son a los que se les notifican los cambios en el flujo de datos que emite el Publisher Subscription Una suscripción se creará en el lado del ‘Publisher’ y se compartirá con el ‘Subscriber’ Processor Un procesador puede ser utilizado entre el ‘Publisher’ y el ‘Subscriber’ para realizar transformaciones La especificación de ‘Reactive Stream’ es un estándar y desde Java 9 se incluye en el Flow API Programación Reactiva - Conceptos
  • 6. Meetup Spring Madrid - WebFlux Es un proyecto que se basa en la especificación de ‘Reactive Stream’ proporcionando una implementación. Proporciona dos tipos: Mono: implementa un Publisher y devuelve 0 o 1 elementos Flux: implementa un Publisher y devuelve N elementos En RxJava serían un Flowable o Observable (en función de la versión) Project Reactor ¿Qué es?
  • 7. Meetup Spring Madrid - WebFlux La nueva versión de Spring 5 trae soporte para la programación reactiva mediante el nuevo módulo llamado WebFlux. WebFlux a su vez toma como base la librería del proyecto Reactor (https://projectreactor.io). WebFlux permite su uso a través de anotaciones (de forma similar al modelo de programación de Spring Web MVC) o de forma funcional (programática) Spring WebFlux ¿Qué es?
  • 8. Editar el estilo de texto del patrón Ejemplo
  • 9. Meetup Spring Madrid - WebFlux Spring WebFlux - Ejemplo DB Controller Repository Model
  • 10. Meetup Spring Madrid - WebFlux Spring WebFlux - Ejemplo MongoDB MessageController @RestController MessageRepository extends ReactiveMongoRepository Message @Document
  • 11. Meetup Spring Madrid - WebFlux Spring WebFlux - Ejemplo
  • 12. Meetup Spring Madrid - WebFlux Spring WebFlux - Ejemplo pom.xml
  • 13. Meetup Spring Madrid - WebFlux Spring WebFlux - Ejemplo pom.xml
  • 14. Meetup Spring Madrid - WebFlux Spring WebFlux - Ejemplo modelo
  • 15. Meetup Spring Madrid - WebFlux Spring WebFlux - Ejemplo repository
  • 16. Meetup Spring Madrid - WebFlux Spring WebFlux - Ejemplo controller
  • 17. Editar el estilo de texto del patrón Spring MVC y Spring WebFlux
  • 18. Meetup Spring Madrid - WebFlux Spring WebFlux Spring MVC Spring WebFlux Reactive Web API Reactor, Reactive Streams Servlet API Tomcat, Jetty Netty Tomcat, Jetty Blocking I/O Non - Blocking I/O Ref: Juergen Hoeller
  • 19. Meetup Spring Madrid - WebFlux Spring WebFlux Spring MVC Spring WebFlux Reactive Web API Reactor, Reactive Streams Servlet API Tomcat, Jetty Netty Tomcat, Jetty Blocking I/O Non - Blocking I/O Ref: Juergen Hoeller 1 Thread gestiona toda llamada, quedando bloqueado hasta que esta termina produciendo la respuesta. Trabaja con un pool de threads esperando a recibir peticiones
  • 20. Meetup Spring Madrid - WebFlux Spring WebFlux Spring MVC Spring WebFlux Reactive Web API Reactor, Reactive Streams Servlet API Tomcat, Jetty Netty Tomcat, Jetty Blocking I/O Non - Blocking I/O Ref: Juergen Hoeller 1 Thread gestiona toda llamada, quedando bloqueado hasta que esta termina produciendo la respuesta. Trabaja con un pool de threads esperando a recibir peticiones Idóneo si el ‘sistema de almacenamiento’ es bloqueante Llamadas no bloqueantes Modelo de concurrencia ‘event loop’ Endpoints funcionales Idóneo si el ‘sistema de almacenamiento’ es NO bloqueante
  • 21. Meetup Spring Madrid - WebFlux Spring WebFlux @Controller, @RestController Spring MVC Spring WebFlux Reactive Web API Reactor, Reactive Streams Servlet API Tomcat, Jetty Netty Tomcat, Jetty Blocking I/O Non - Blocking I/O Ref: Juergen Hoeller
  • 22. Meetup Spring Madrid - WebFlux Spring WebFlux @Controller, @RestController Spring MVC Spring WebFlux Reactive Web API Reactor, Reactive Streams Servlet API Tomcat, Jetty Netty Tomcat, Jetty Blocking I/O Non - Blocking I/O Ref: Juergen Hoeller Router functions
  • 23. Meetup Spring Madrid - WebFlux Spring WebFlux Spring MVC
  • 24. Meetup Spring Madrid - WebFlux Spring WebFlux Spring WebFlux
  • 25. Meetup Spring Madrid - WebFlux Spring WebFlux
  • 26. Meetup Spring Madrid - WebFlux Spring WebFlux El entorno de ejecución recoge una petición que hace ‘match’ con la URL especificada y la envía al manejador de la petición
  • 27. Meetup Spring Madrid - WebFlux Spring WebFlux El entorno de ejecución recoge una petición que hace ‘match’ con la URL especificada y la envía al manejador de la petición Se pasan los parámetros al método del repositorio que devuelve un ‘Publisher’ para el objeto ‘Message’ si es posible producirlo
  • 28. Meetup Spring Madrid - WebFlux Spring WebFlux
  • 29. Meetup Spring Madrid - WebFlux Spring WebFlux Llega una petición t
  • 30. Meetup Spring Madrid - WebFlux Spring WebFlux Llega una petición Se pasa al manejador t
  • 31. Meetup Spring Madrid - WebFlux Spring WebFlux Llega una petición Se pasa al manejador El manejador identifica los parámetros t
  • 32. Meetup Spring Madrid - WebFlux Spring WebFlux Llega una petición Se pasa al manejador El manejador identifica los parámetros El manejador construye un pipeline para llegar al elemento Mensaje y lo devuelve. Operación NO BLOQUEANTE t
  • 33. Meetup Spring Madrid - WebFlux Spring WebFlux Llega una petición Se pasa al manejador El manejador identifica los parámetros El manejador construye un pipeline para llegar al elemento Mensaje y lo devuelve. Operación NO BLOQUEANTE El entorno de ejecución (en este caso el sistema de ‘event loop’ que proporciona WebFlux) se encarga de registrar un Subscriber (crear una suscripción) al Publisher (el elemento Mono) t
  • 34. Meetup Spring Madrid - WebFlux Spring WebFlux Llega una petición Se pasa al manejador El manejador identifica los parámetros El manejador construye un pipeline para llegar al elemento Mensaje y lo devuelve. Operación NO BLOQUEANTE El entorno de ejecución (en este caso el sistema de ‘event loop’ que proporciona WebFlux) se encarga de registrar un Subscriber (crear una suscripción) al Publisher (el elemento Mono) El Publisher (el elemento Mono) comienza a preguntar por el elemento ‘Message’ t
  • 35. Meetup Spring Madrid - WebFlux Spring WebFlux Llega una petición Se pasa al manejador El manejador identifica los parámetros El manejador construye un pipeline para llegar al elemento Mensaje y lo devuelve. Operación NO BLOQUEANTE El entorno de ejecución (en este caso el sistema de ‘event loop’ que proporciona WebFlux) se encarga de registrar un Subscriber (crear una suscripción) al Publisher (el elemento Mono) El Publisher (el elemento Mono) comienza a preguntar por el elemento ‘Message’ El Publisher recibirá el elemento siempre que sea posible producirlo y lo reenviará en la respuesta HTTP t
  • 36. Editar el estilo de texto del patrón Spring WebFlux - Programación funcional
  • 37. Meetup Spring Madrid - WebFlux Spring WebFlux - Funcional Spring WebFlux - Funcional
  • 38. Meetup Spring Madrid - WebFlux Spring WebFlux - Funcional Spring WebFlux - Funcional
  • 39. Meetup Spring Madrid - WebFlux Spring WebFlux - Funcional - Lambdas Spring WebFlux - Funcional - Lambdas
  • 40. Editar el estilo de texto del patrón Spring WebFlux - Server Sent Events
  • 41. Meetup Spring Madrid - WebFlux Spring WebFlux - Server Sent Events API basada en HTTP para el envío de información push. Permite al servidor enviar información al cliente (comunicación en un único sentido) ¿Diferencia con los webSocket? Los webSockets son un sistema de comunicación basado en TCP que permite comunicación bi-direccional entre cliente y servidor ¿Qué es?
  • 42. Meetup Spring Madrid - WebFlux Spring WebFlux - Server Sent Events Spring WebFlux - Server Sent Events
  • 43. Meetup Spring Madrid - WebFlux Spring WebFlux - Server Sent Events Spring WebFlux - Server Sent Events
  • 44. Meetup Spring Madrid - WebFlux Spring WebFlux - Server Sent Events Cliente - Server Sent Events Ref: www.w3schools.com
  • 45. Editar el estilo de texto del patrón Spring WebFlux - WebSockets
  • 46. Meetup Spring Madrid - WebFlux Spring WebFlux - WebSockets Spring WebFlux - WebSockets
  • 47. Editar el estilo de texto del patrón Spring WebFlux - Cliente Reactivo
  • 48. Meetup Spring Madrid - WebFlux Spring WebFlux - Cliente reactivo microservicio microservicio microservicio microservicio DB DB DB
  • 49. Meetup Spring Madrid - WebFlux Spring WebFlux - Cliente reactivo microservicio microservicio microservicio microservicio DB DB DB Non - Blocking I/O
  • 50. Meetup Spring Madrid - WebFlux Spring WebFlux - Cliente reactivo microservicio microservicio microservicio microservicio DB DB DB RestTemplate Non - Blocking I/O Blocking I/O
  • 51. Meetup Spring Madrid - WebFlux Spring WebFlux - Cliente reactivo microservicio microservicio microservicio microservicio DB DB DB WebClient Non - Blocking I/O Non - Blocking I/O
  • 52. Meetup Spring Madrid - WebFlux Spring WebFlux - Cliente reactivo Spring WebFlux - Cliente reactivo
  • 53. Editar el estilo de texto del patrón Spring WebFlux - Testing
  • 54. Meetup Spring Madrid - WebFlux Spring WebFlux - Testing Spring WebFlux - Testing
  • 55. Editar el estilo de texto del patrón Spring WebFlux - Resumen
  • 56. Meetup Spring Madrid - WebFlux Spring WebFlux - Conclusiones ● Creación de un proyecto con Spring WebFlux ● Diferencias entre Spring WebFlux y Spring MVC y sus respectivos stacks ● Flujo de trabajo ● Creación de servicios REST con Spring WebFlux ● Modelo de programación funcional ● Server Sent Events ● WebSockets ● Cliente reactivo ● Testing
  • 57. Meetup Spring Madrid - WebFlux Spring WebFlux - Conclusiones Ref: https://medium.com/@the.raj.saxena Rendimiento Spring MVC Spring WebFlux Spring MVC 1.5.10.RELEASE Spring WebFlux 2.0.0.RELEASE 2500 users (4 requests/user)
  • 58. Meetup Spring Madrid - WebFlux Spring WebFlux - Conclusiones Ref: https://medium.com/@the.raj.saxena Rendimiento Spring MVC Spring WebFlux Spring MVC 1.5.10.RELEASE Spring WebFlux 2.0.0.RELEASE 5000 users (4 requests/user)
  • 59. Meetup Spring Madrid - WebFlux Spring WebFlux - Conclusiones Ref: https://medium.com/@the.raj.saxena Rendimiento Spring MVC Spring WebFlux Spring MVC 1.5.10.RELEASE Spring WebFlux 2.0.0.RELEASE 10000 users (4 requests/user)
  • 61. Editar el estilo de texto del patrón Concurso!
  • 62. Meetup Spring Madrid - WebFlux Grupo de meetup de Spring Madrid https://kahoot.it/