Files
java-design-patterns/localization/pt/polling-publisher
zanarelliandGitHub c8423198cd docs: pt: add localization for polling-publisher, money, delegation patterns (#3583)
Add Brazilian Portuguese (pt) translations for three previously
untranslated pattern READMEs, following the existing localization/pt/
convention documented in the wiki (15. Support for multiple languages).
Frontmatter and section headers follow the same structure used by the
most recently updated existing translation (singleton), keeping code
blocks, links, and image references unchanged from the English source.
2026-08-25 07:51:26 +03:00
..

title, shortTitle, description, category, language, tag
title shortTitle description category language tag
Polling Publisher-Subscriber Pattern in Java: Mastering Asynchronous Messaging Elegantly Polling Pub/Sub Learn how to implement a Polling Publisher-Subscriber system in Java using Spring Boot and Kafka. Explore the architecture, real-world analogies, and benefits of asynchronous communication with clean code examples. Architectural pt
Spring Boot
Kafka
Microservices
Asynchronous Messaging
Decoupling

Também conhecido como

  • Event-Driven Architecture
  • Asynchronous Pub/Sub Pattern
  • Message Queue-Based Polling System

Propósito

O padrão Polling Publisher-Subscriber desacopla os produtores de dados dos consumidores ao permitir uma comunicação assíncrona e orientada a mensagens. Um serviço consulta periodicamente (poll) uma fonte de dados e publica mensagens em um message broker (por exemplo, Kafka), que são então consumidas por um ou mais serviços assinantes.

Explicação

Exemplo do mundo real

Uma agência de notícias consulta constantemente as últimas atualizações. Assim que recebe novas informações, ela as publica em diferentes veículos (TV, jornais, aplicativos). Cada veículo consome e exibe as atualizações de forma independente.

Em outras palavras

Um serviço verifica regularmente se há atualizações (polling) e envia mensagens para o Kafka. Outro serviço escuta o Kafka e processa as mensagens de forma assíncrona.

De acordo com a Wikipédia

Este padrão se assemelha muito ao modelo Publishsubscribe, no qual as mensagens são enviadas pelos publicadores e recebidas pelos assinantes sem que eles se conheçam.

Fluxo da arquitetura

+------------+      +--------+      +-------------+
|  Publisher | ---> | Kafka  | ---> | Subscriber  |
+------------+      +--------+      +-------------+

Exemplo Programático (Spring Boot + Kafka)

Serviço Publisher

  • Usa o @Scheduled do Spring para consultar dados periodicamente.
  • Publica dados em um tópico do Kafka.
  • Opcionalmente expõe uma API REST para publicação manual de dados.
@Scheduled(fixedRate = 5000)
public void pollAndPublish() {
    String data = pollingService.getLatestData();
    kafkaTemplate.send("updates-topic", data);
}

Serviço Subscriber

  • Escuta um tópico do Kafka usando @KafkaListener.
  • Processa as mensagens de forma assíncrona.
@KafkaListener(topics = "updates-topic")
public void processUpdate(String message) {
    log.info("Received update: {}", message);
    updateProcessor.handle(message);
}

Quando usar o padrão Polling Publisher-Subscriber

Use esse padrão quando:

  • Não é possível o produtor enviar dados em tempo real (push).
  • Deseja-se um baixo acoplamento entre produtores e consumidores.
  • É necessário processamento de eventos assíncrono e escalável.
  • Você está construindo uma arquitetura de microsserviços orientada a eventos.

Aplicações do mundo real

  • Painéis de relatórios em tempo real
  • Agregadores de health check para sistemas distribuídos
  • Processamento de telemetria de IoT
  • Sistemas de notificação e alerta

Benefícios e desafios do padrão Polling Pub/Sub

Benefícios

  • Baixo acoplamento entre serviços
  • Arquitetura assíncrona e escalável
  • Tolerante a falhas, com persistência de mensagens no Kafka
  • Fácil de estender com novos consumidores ou publicadores

Desafios

  • O polling introduz latência entre a geração e o consumo dos dados
  • Requer o gerenciamento e a configuração do Kafka (ou de outro broker)
  • Implantação e infraestrutura ligeiramente mais complexas

Padrões relacionados

Referências e Créditos