Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java Reativo, o que é isso?

Ana Neri
April 07, 2020

Java Reativo, o que é isso?

Talk apresentada para o "Rolê de Java" com a comunidade que organizo Womakerscode!
Nessa apresentação você vai saber bastante coisa sobre o lado reativo que temos no Java, e como usar o módulo reativo do Spring, o Spring Webflux em nossas aplicações!

Ana Neri

April 07, 2020
Tweet

More Decks by Ana Neri

Other Decks in Technology

Transcript

  1. Dia 1 (); JVM - Java Virtual Machine O que

    é reatividade Programação reativa - o que mudou a partir do Java8? Spring WebFlux Reactive Libraries: RxJava e Reactor Spring WebFlux - behind the scences
  2. O que é reatividade Aplicações orientadas a um alto número

    escalável, os usuários querem a todo o momento produtividade e assertividade Programação Reativa pode-se dizer que é um modelo de programação em fluxo de dados, em sua maioria assíncronos, em conjunto com o roteamento de eventos Funcionalidade semelhante a Threads! @anabneri
  3. O que é reatividade @anabneri Assíncrono são duas tarefas que

    são executadas simultaneamente Um dos pilares de programação reativa e seu modelo é a ideia de fluxo de dados “streams” que podem ser criadas através de variáveis discretas Pode-se entender então por Stream como uma sequência de eventos que são ordenados por tempo, na qual só pode enviar três valores: VALOR, ERRO, CONCLUÍDO Esses eventos são conhecidos como: onNext, onError, onCompleted
  4. Introdução ao Spring Webflux @anabneri Servidor Netty Inibe os sistemas

    bloqueantes que temos em aplicações com padrão MVC
  5. Arquitetura Spring Webflux @anabneri Request Canal Futuro Data Flows do

    Servidor Servidor Netty Fila de eventos Loop de eventos ClasseHandler Controller EndPoint Callback EndPoint Funcional evento 1 evento 2 evento N 1 - canal é criado 2 - registrado com um event loop 3 - está ativo 1 - Ivativo 2 - event loop não registrados 3 - fechado Cliente não-bloqueante 1 2 3 - 1 3 - 2 4 5 6
  6. ReactiveX e os Observables @anabneri Observador Observadores Publish(data) -> {

    If(data is life lesson) thenRead(data) } Publish(data) -> { thenRead(data) talkeAction() }
  7. Criação de serviços de modo funcional e reativo @anabneri Com

    a criação desse método já conseguimos substituir nosso RestController, sendo assim tem que comentar essa anotação na nossa classe do controller para que quando formos testar não dê conflito
  8. Criação de serviços de modo funcional e reativo @anabneri Quando

    testado no browser e o postman o esperado é ter o mesmo resultado de quando criados os outros endpoints de forma comum
  9. Stream de eventos @anabneri -> Comentar o @Configuration da classe

    Router e o @Component da classe handler -> Ir na classe Controller e descomentar o @RestController pois é nessa classe que iremos inserir nosso events stream
  10. Stream de eventos @anabneri -> Quando testar no browser esse

    método vai permitir que possamos fazer mais de um requisição ao mesmo tempo tornando nossa aplicação assíncrona