Spring Webflux
Atualizado
Atualizado
Já o spring-webflux é baseado nas reactive streams, ou seja, assíncronas e não bloqueantes.
Seu servidor padrão é o Netty, ele é totalmente reativo! Ele funciona com o princípio de "event loop", onde veremos depois.
❗As versões mais atualizadas do Tomcat, permite que o mesmo seja trabalhado com webflux, mas por padrão utilizaremos o Netty.
Essa imagem é um modelo de como o Spring Webflux trata as requisições. ⬇️
Temos o mesmo Request#1 do exemplo do MVC.
Quando esse request bate no Controller (representation layer), será transformado em um evento (ou uma stream). Esse evento será jogado num looping (um laço) onde será tratado pelo Webflux no event loop (uma fila).
Event Loop: pode ser que cheguem várias requisições de maneira simultânea. O Webflux tentará instanciar o mínimo possível de threads. Essas requisições ficarão nessa fila até que sejam processadas.
Para que o event handler funcione de maneira REATIVA, o nosso DB também precisa ser reativo. Como um banco não relacional (MongoDB). Precisamos prover dados reativos para esse banco, para que todo o processo ocorra de maneira reativa também.