spring netty reactive-programming spring-webflux project-reactor

spring - Los beneficios de tener puntos finales HTTP devuelven instancias de Flux/Mono en lugar de DTO



netty reactive-programming (2)

Le sugiero encarecidamente que vea la presentación recientemente presentada en Devoxx Bélgica "Aplicación web reactiva con Spring 5" por Rossen Stoyanchev .

Allí habla sobre cómo el controlador reactivo web (presentado a continuación) en la superficie se parece al controlador de solicitud / respuesta HTTP Servlet HTTP MVC, pero en realidad no lo es.

@GetMapping("/users/{id}") public Mono<User> getUser(@PathValiable Long id) { return this.userRepository.findById(id); } @GetMapping("/users") public Flux<User> getUsers() { return this.userRepository.findAll(); }

habla sobre cómo Servlet 3.1 aunque el no bloqueo no funciona de verdad para ser completamente reactivo, y cómo el código de cola que conecta el Servlet 3.1 y Reactive Streams se implementa como parte de los cambios de Spring 5 para los contenedores web compatibles con Servlet 3.1 (Jetty y Tomcat ).

Y, por supuesto, él está al tanto de que los servidores compatibles con Reactivos no bloqueantes (Netty, Undertow) son compatibles para ejecutar Reactive Streams.

He visto Spring Tips: Functional Reative Endpoints con Spring Framework 5.0 y leí un poco sobre el reactor de primavera, pero no puedo entenderlo.

¿Cuáles son los beneficios de tener puntos finales que devuelvan instancias de Flux / Mono (jacksonified) en lugar de objetos dto directos (jacksonified), dado que tengo Netty y Spring Reactor activos? Inicialmente asumí que las secuencias reactivas funcionarían, en el contexto de solicitud / respuesta http, más bien como websockets en los que el servidor envía los datos al receptor con un canal abierto, pero este no parece ser el caso.

Además, ¿qué hace Netty en realidad mejor en programación reactiva que tomcat?

Lo siento si estas preguntas parecen estúpidas, pero no entiendo muy bien el propósito de esta nueva orientación marco. ¿Por qué surgió, cómo funciona y qué problemas resuelve?


No es correcto decir que Netty es mejor que Tomcat. La implementación es diferente. Tomcat usa java NIO para implementar la especificación del servlet 3.1. Mientras tanto, netty usa NIO también, pero presenta una API personalizada. Si desea obtener información sobre cómo se implementa el servlet 3.1 en Netty, mire este video https://youtu.be/uGXsnB2S_vc