1
resposta

Isso é um fluxo Interval ou Schedule automático ?

O text event stream seria igual a um Schedule ? ou seja se num Schedule eu programaria para ele consulta de tempo em tempo?

1 resposta

Olá, Emerson. Como vai?

Essa é uma excelente dúvida conceitual, pois ambos os mecanismos envolvem a ideia de "tempo" e repetição, mas eles operam em camadas e propósitos completamente diferentes dentro da arquitetura de software.

Para respondê-lo de forma direta: o text/event-stream (Server-Sent Events - SSE) implementado no WebFlux funciona como um fluxo contínuo baseado em intervalos (Interval) de envio do servidor para o cliente, e não como um agendador automático tradicional (Scheduler).

Para entender melhor a diferença prática entre eles, vamos analisar o papel de cada um:

Server-Sent Events (text/event-stream)

O SSE é um protocolo de comunicação focado na camada de rede (HTTP). Ele estabelece uma conexão persistente e unidirecional.

  • Quando você utiliza o Flux.interval(Duration.ofSeconds(1)) no Spring WebFlux combinado com o Media Type text/event-stream, o servidor mantém uma única conexão aberta com o navegador do usuário.
  • O servidor usa essa conexão aberta para empurrar (push) os novos dados a cada intervalo definido.
  • O cliente (navegador) apenas "escuta" e reage aos novos dados conforme eles chegam, sem precisar fazer novas requisições HTTP.

Agendador Tradicional (Schedule / @Scheduled)

O Scheduler (como a anotação @Scheduled do Spring Core) é um mecanismo interno do backend para automação de tarefas.

  • Ele é programado para disparar um bloco de código de tempos em tempos (ex: a cada 5 minutos, ou toda meia-noite).
  • Ele roda em segundo plano no servidor de forma independente de qualquer usuário estar conectado ou não.
  • Se você usasse um Schedule para o cliente descobrir novos dados, o navegador precisaria ficar fazendo requisições repetidas para o servidor de tempos em tempos (uma técnica antiga conhecida como Polling ou Short Polling), o que consome muito mais recursos de rede.

Resumo Comparativo

  • Schedule: O servidor executa uma tarefa interna de tempos em tempos (ex: rotina de limpeza de banco de dados, geração de relatórios).
  • SSE (Interval no WebFlux): O servidor aproveita uma conexão já aberta para enviar atualizações em tempo real para o usuário sem que ele precise pedir (ex: feed de redes sociais, cotação de ações, gráficos em tempo real).

No contexto do curso com WebFlux, o objetivo do text/event-stream é justamente dar essa experiência reativa e eficiente de atualização contínua para o front-end.

Espero que possa ter lhe ajudado!