ANÚNCIO

Aula 20 – Vibe Coding: Implementando um sistema de Gestão de Mudancas

Implemente notificações em tempo real com Server-Sent Events, CDI e Quarkus. Aprenda a integrar e-mails e eventos assíncronos em Java.

⏱ 1h 21min 👁 224 visualizações 📅 agosto 28, 2025

Resumo

A evolução das notificações em tempo real no Quarkus

Esta aula apresenta uma implementação prática e completa de um sistema de gestão de mudanças utilizando Server-Sent Events (SSE) no framework Quarkus, integrado com CDI (Contexts and Dependency Injection) do Jakarta EE. O conteúdo aborda desde os conceitos fundamentais até a aplicação em um projeto real de gestão de tickets, mostrando como construir uma arquitetura escalável e desacoplada para notificações eficientes que conectam backend Java com frontend Angular.

O que são Server-Sent Events e por que usar

Server-Sent Events representa uma alternativa elegante aos WebSockets para comunicação unidirecional em tempo real do servidor para o cliente. Diferentemente dos WebSockets, que permitem comunicação bidirecional e requerem mais overhead de protocolo, o SSE utiliza HTTP padrão e é ideal para cenários onde o servidor precisa enviar atualizações contínuas ao cliente sem que este envie mensagens de volta. No contexto do Quarkus, essa abordagem oferece eficiência de recursos, simplicidade na implementação e compatibilidade com infraestruturas HTTP tradicionais. A escolha entre SSE e WebSockets depende do caso de uso: SSE é perfeito para notificações unidirecionais como mudança de status de tickets, enquanto WebSockets brilham em aplicações que exigem troca bidirecional constante.

Criando endpoints SSE e gerenciando conexões

O vídeo demonstra na prática como criar um endpoint SSE no Quarkus que registra e mantém as conexões de clientes ativos. Isso envolve criar um recurso JAX-RS que retorna um `SseEventSink`, permitindo ao servidor enviar eventos para múltiplos clientes simultaneamente. A implementação requer gerenciamento cuidadoso das conexões ativas, garantindo que novos clientes que se conectam recebam atualizações e que desconexões sejam tratadas graciosamente. O Quarkus simplifica esse processo graças à sua integração nativa com CDI, permitindo injetar dependências que controlam o ciclo de vida das notificações.

Disparando eventos CDI para desacoplamento

Um dos pontos-chave da arquitetura apresentada é o uso de eventos CDI para desacoplar a lógica de negócio do sistema de notificações. Quando um ticket é movido no sistema, em vez de chamar diretamente o código responsável por enviar notificações, a aplicação dispara um evento CDI que é observado por um listener assíncrono. Essa abordagem mantém o código limpo, testável e escalável, permitindo adicionar novos observadores de eventos sem modificar a lógica principal. O vídeo mostra como configurar e usar `@Observes` e `@ObservesAsync` para criar fluxos de eventos eficientes que disparram notificações em tempo real.

Transmitindo notificações para o frontend Angular

No lado do cliente, o Angular precisa conectar-se ao endpoint SSE e escutar eventos. O vídeo demonstra como implementar um serviço Angular que abre uma conexão com `EventSource` apontando para o endpoint SSE do Quarkus. Quando o backend envia um evento, o frontend recebe a notificação e atualiza a interface do usuário em tempo real. Essa integração entre Quarkus e Angular cria uma experiência fluida onde mudanças no sistema são refletidas instantaneamente, melhorando a responsividade e a experiência do usuário. O processo envolve tratamento de reconexão automática em caso de desconexão e gestão adequada de recursos no lado do cliente.

Configurando e-mails automatizados com Quarkus Mailer

Além das notificações em tempo real na web, a aula aborda como configurar o Quarkus Mailer para enviar e-mails automaticamente quando eventos importantes ocorrem no sistema. Isso inclui adicionar a dependência do Mailer ao projeto, configurar credenciais de SMTP (ou serviços como Mailtrap para testes), e integrar o envio de e-mails ao fluxo de eventos CDI. O Quarkus Mailer oferece uma API simples e intuitiva para enviar e-mails síncronos ou assíncronos, permitindo que notificações sejam entregues via múltiplos canais sem comprometer a performance da aplicação.

Integrando com Mailtrap para testes de e-mail

Para desenvolvimento e testes, o vídeo recomenda o uso do Mailtrap, um serviço que intercepta e-mails SMTP, permitindo que desenvolvedores testem o envio de e-mails sem arriscar enviar mensagens reais. A integração é simples: basta configurar as credenciais do Mailtrap nas propriedades do Quarkus (application.properties ou application.yml) e todos os e-mails disparados pela aplicação serão capturados no painel do Mailtrap. Isso acelera o desenvolvimento, pois permite validar lógica de e-mail sem depender de caixas de e-mail reais ou lidar com delícios de SMTP em produção.

Arquitetura escalável e boas práticas

O projeto Vibe Coding demonstrado no repositório do GitHub da aula exemplifica como estruturar uma aplicação Java moderna com Quarkus, respeitando princípios de desacoplamento, resiliência e escalabilidade. Usando eventos CDI assíncronos, a aplicação evita acoplamento tight entre componentes, facilitando manutenção e testes. O vídeo também menciona dicas de configuração do Quarkus relevantes para produção, como tuning de timeout de conexões, tratamento de erros e monitoramento de eventos. Essas práticas, combinadas com as recomendações de livros clássicos como "Effective Java" de Joshua Bloch, garantem que sistemas construídos com essas técnicas sejam robustos e mantíveis a longo prazo.

O que você vai aprender

  • Implementar endpoints Server-Sent Events (SSE) no Quarkus para notificações em tempo real
  • Usar eventos CDI assíncronos para desacoplar lógica de negócio e notificações
  • Integrar frontend Angular com SSE do Quarkus para atualizar interface em tempo real
  • Configurar Quarkus Mailer para enviar e-mails automatizados via eventos
  • Testar envio de e-mails com Mailtrap durante desenvolvimento
  • Comparar SSE e WebSockets para escolher a melhor abordagem de comunicação real-time

Conceitos abordados

Tecnologias utilizadas

Capítulos 9 marcações

  1. Introdução e visão geral da aula
  2. O que são Server-Sent Events e quando usar
  3. Diferença entre SSE e WebSockets
  4. Criando endpoint SSE no Quarkus
  5. Registrando conexões e gerenciando clientes ativos
  6. Disparando eventos CDI para notificações assíncronas
  7. Integrando com Angular para receber notificações
  8. Configurando Quarkus Mailer e Mailtrap
  9. Boas práticas e escalabilidade

Próximo vídeo sugerido

Avaliações

Avaliação dos alunos 0.0
0 avaliações
Avalie esta aula

Ajude outros alunos a entenderem se esta aula foi útil.

Ainda não há avaliações. Seja o primeiro a avaliar esta aula.