Top Banner
Spring Reactive
65

Spring Reactivespring-boot-starter-weþfl factld> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Aug 07, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Spring Reactive

Page 2: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Sou Alberto :)

Page 3: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Trabalho no grupo Caelum

Page 4: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Reativo?

Page 5: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Muitas opiniões

Page 6: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Abstração do Observer

Page 7: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Visão mais rebuscada

Page 8: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Abstração para composição de eventos

Page 9: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Consulta Serviço externo

Executa regra de negócio

Gera objeto para retorno

Page 10: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Quem implementa isso para você?

Page 11: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

RX Java e Project Reactor

Page 12: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Reactive Streams

Page 13: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Para que serve isso?

Page 14: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 15: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Onde esse código é executado?

Page 16: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Thread por request

Page 17: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

E se pudesse rodar em outras threads?

Page 18: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Ali já tem 4 funções

Page 19: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 20: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 21: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Mono?

Page 22: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Publicador de apenas uma informação

Page 23: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 24: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Publicador de várias informações

Page 25: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 26: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Quem executa o fluxo de funções?

Page 27: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Spring Reactive!

Page 28: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Camada reativa do Spring

Page 29: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 30: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Como eu ativo isso?

Page 31: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 32: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 33: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Netty?

Page 34: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Não depende de Servlets

Page 35: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Mas se integra :)

Page 36: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Benefícios

Page 37: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Delegação total da execução de código

Page 38: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Pools de threads separados para vários momentos

Page 39: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Pools especializados para códigos blocantes

Page 40: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 41: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Maior escalabilidade com menor custo

Page 42: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Bom encaixe para API

Page 43: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Muito bom para drivers de bancos não relacionais

Page 44: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Complexidades adicionais

Page 45: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Modelo de programação diferente

Page 46: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Talvez seja mais complicado de manter

Page 47: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Drivers JDBC são blocantes

Page 48: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Debug mais complicado

Page 49: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Teste mais complicado

Page 50: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Exceptions para indicar tipos de retorno

Page 51: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 52: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Múltiplos pools não casam bem com ThreadLocal

Page 53: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 54: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 55: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 56: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Dúvidas?

Page 57: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

github.com/asouza

Page 58: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

twitter.com/alberto_souza

Page 59: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Cliente reativo

Page 60: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 61: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Como consumimos as informações?

Page 62: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 63: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Backpressure

Page 64: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Não mande mais do que eu posso consumir

Page 65: Spring Reactive<arti factld>spring-boot-starter-weþfl factld> </dependency> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Longe da realidade do povo