O documento apresenta o framework Vert.x, que permite o desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas. Vert.x usa um modelo baseado em verticles, que são unidades de execução assíncronas que se comunicam através de um event bus. O documento demonstra como criar aplicações web RESTful e sistemas em tempo real com Vert.x usando Java e outras linguagens.
2. Sumário
● Motivação
● E foi criado o Vert.x
● Tecnologias similares ao Vert.x
● Modelo Arquitetural
● Verticles: o Vert.x em ação!
● Event Bus: “sistema nervoso” do Vert.x
● Um pouco de REST com o Vert.x
● Vert.x na Web
● Histórico do Vert.x
● E tem muito mais com o Vert.x!!
6. Motivação
● Gerenciamento de múltiplos clientes simultâneos
● Alta disponibilidade de recursos
● Agilidade, precisão e segurança na entrega de informações
● Necessidade de informações em tempo real
● Imagina se o servidor web bloquear as requisições?
7. E foi criado o Vert.x!!
● Framework para a JVM
● Desenvolvimento de aplicações reativas
● Orientado a Eventos
● Assíncrono
● Não blocante
● Simples, porém poderoso
● Modular
● Leve
17. Verticles: O Vert.x em Ação!!
● Unidade de execução do Vert.x
● Poligota: Verticles em diversas linguagens
● Single thread
● Módulos: agrupamento de verticles
● Comunicação com outros Verticles através de mensagens
● Execução de várias formas
● Linha de comando
● Maven
● Fat Jars
18. Verticles: O Vert.x em Ação!!
● Desenvolvimento de um Verticle:
● Subclasse de AbstractVerticle
● Sobrescrita dos métodos start() e stop()
19. Verticles: O Vert.x em Ação!!
● Verticles assíncronos: parâmetro do tipo Future:
● Deploy de vários verticles no método start()
● Sem bloqueios para deploy de outros verticles
20. Verticles: O Vert.x em Ação!!
● Tipos de Verticles:
● Standard
● Execução em apenas 1 Event Loop
● Vertx gerencia threads e escalonamento
● Worker
● Execução através de Threads de um pool do Vert.x
● Criados para execução de códigos blocantes
● Multithread
● Verticles concorrentes executados por várias Threads
21. Verticles: O Vert.x em Ação!!
DEMO
Verticle em Java
Execução em Terminal e fat-jar
22. Event Bus
● Sistema nervoso do Vert.x
● Implantação de verticles
● Troca de mensagens entre Verticles poliglotas
● Múltiplos Servidores e Browsers
EVENT BUS
JAVA GROOVY RUBYJAVA JAVA J.S.
24. Event Bus – Conceitos e API
● Endereçamento
● Mensagens envidas ao event bus através de mensagens
● Endereço Vert.x é uma simples String
● Qualquer String é válida
● Handlers
● Mensagens recebidas em handlers (manipuladores)
● Registro e um Handler como um endereço
● Único handler pode registrar diversos endereços
25. Event Bus – Conceitos e API
● Registro de Handlers com endereços
● Exclusão de Handlers
26. Event Bus – Troca de Mensagens
● Publish / Subscribe
● Mensagens enviadas para um endereço
● Entrega de mensagens para todos os handlers
cadastrados no endereço criado
● Modelo padrão Publish / Subscribe
● Qualquer String é válida
27. Event Bus – Troca de Mensagens
● Point-to-Point e Request-Response
● Mensagem enviada para um único handler
● Handler pode “responder” a mensagem para o Event Bus
● Modelo padrão request-response
28. Event Bus – Tipos de Mensagens
● Tipos primitivos
● String
● Buffers
● JSON
● Convenção e pŕatica padrão a troca de mensagens
através de JSON
29. Event Bus – Demo Event Bus
DEMO
Event Bus em Java
Criação e Troca de Mensagens
30. REST com Vert.x
● Roteamento de rotas com handlers corretos
● GET - /api/books
● GET - /api/books/:id
● POST - /api/books
● PUT - /api/books/:id
● DELETE - /api/books/:id
32. Sistemas Web com Vert.x
● Aplicações Server-side
● Aplicações Web RESTful
● Recomendado para escrita de microserviços RESTful
● Aplicações Web Real-time
● Suporte à autenticação e autorização
● Criação de Rotas
● Suporte a conteúdo estático
● Suporte a diversos tipos de templates
34. Sistemas Web com Vert.x
● Capturando Handlers e invocando outros Handlers
35. Sistemas Web com Vert.x
DEMO
Sistema Web Java com Vert.x
Aplicação WEB RESTful
36. E tem muito mais com o Vert.x!!
● Core e Web
● Acesso a Dados
● MongoDB
● JDBC
● Redis
● Integração: Mail e JCA Clients
● Autenticação e Autorização: auth Common, JDBC e Shiro
● Programação Reativa: Vert.x Rx e Streams Reativos
● Cloud e Docker
● Clustering e alta disponibilidade
37. E tem muito mais com o Vert.x!!
DEMO
Sistema Web Java com Vert.x
Deploy na Cloud
38. Histórico do Vert.x
● Primeiro nome: Node.x
● Versão Atual: 3.0.0
● Criador: Tim Fox
● Projeto criado na VMWare
● Ano de criação: 2011
● 2013 – projeto passa a ser mantido pela Eclipse Foundation
39. Sumário
● Motivação
● E foi criado o Vert.x
● Tecnologias similares ao Vert.x
● Modelo Arquitetural
● Verticles: o Vert.x em ação!
● Event Bus: “sistema nervoso” do Vert.x
● Um pouco de REST com o Vert.x
● Vert.x na Web
● Histórico do Vert.x
● E tem muito mais com o Vert.x!!