📊 Capítulo 15: Mensageria com RabbitMQ & Kafka
Especialização Backend com Java 21 & Spring Boot 3
🗺️ RabbitMQ (Fila/Roteamento) vs Apache Kafka (Log Distribuído)
flowchart TD
subgraph RABBIT ["RabbitMQ (Smart Broker / Dumb Consumer)"]
PROD_R["Producer"] --> EX["Exchange (Direct/Topic/Fanout)"]
EX --> Q["Queue (Fila FIFO)"]
Q --> CONS_R["Consumer (Mensagem deletada após ACK)"]
end
subgraph KAFKA ["Apache Kafka (Dumb Broker / Smart Consumer)"]
PROD_K["Producer"] --> TOPIC["Topic com Partições Imutáveis"]
TOPIC --> CONS_K["Consumer Groups (Leitura sequencial via Offset)"]
end
style RABBIT fill:#ede7f6,stroke:#512da8,stroke-width:2px
style KAFKA fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style EX fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style TOPIC fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
🎯 Slide 1: Integração com RabbitMQ no Spring AMQP
@Component
public class PedidoEventConsumer {
@RabbitListener(queues = "pedidos.processamento.queue")
public void processarPedido(PedidoCriadoEvent evento) {
log.info("Processando pedido assíncrono: {}", evento.pedidoId());
// Execução desacoplada do fluxo HTTP principal!
}
}
- Suporte nativo a Dead Letter Queues (DLQ) para mensagens que falham repetidamente.
🎯 Slide 2: Apache Kafka com Spring for Apache Kafka
@Component
public class PagamentoKafkaConsumer {
@KafkaListener(topics = "pagamentos.autorizados", groupId = "notificacoes-group")
public void ouvirPagamento(PagamentoAutorizadoEvent evento, Acknowledgment ack) {
log.info("Evento recebido do Kafka: chave={}", evento.transacaoId());
ack.acknowledge(); // Commit manual do offset!
}
}
🎯 Slide 3: Arquitetura Orientada a Eventos (EDA) & Idempotência
-
Desacoplamento Temporal: Produtores e consumidores não precisam estar online ao mesmo tempo.
-
Garantia At-Least-Once: Mensagens podem ser entregues mais de uma vez em caso de falha de rede.
- Idempotência Mandatória: O consumidor deve validar transações processadas previamente no banco para evitar cobranças duplicadas.
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim