AULA 31
MÓDULO 3
orientação a eventos
⏱ 50 min
Pub/Sub Pattern
Publisher/Subscriber: tópicos e desacoplamento total. Comparativo EventEmitter vs Redis Pub/Sub. Casos de uso: notificações e invalidação de cache.
Pub/SubpublishersubscriberRedistópicoscanal
O padrão Pub/Sub
Pub/Sub (Publisher/Subscriber) é uma generalização do padrão Observer. Publishers emitem mensagens em tópicos. Subscribers se inscrevem em tópicos sem conhecer os publishers.
analogia — Instagram
Você segue hashtags (tópicos). Quem posta com aquela hashtag (publisher) não sabe que você existe. Você recebe as atualizações (subscriber). Pub/Sub em ação.EventEmitter
In-process
Mesmo processo Node
Síncrono
Sem persistência
Mesmo processo Node
Síncrono
Sem persistência
Pub/Sub externo
Cross-process / cross-service
Redis, RabbitMQ, Kafka
Assíncrono
Com persistência e reenvio
Redis, RabbitMQ, Kafka
Assíncrono
Com persistência e reenvio
Redis Pub/Sub
Redis é o sistema de Pub/Sub mais usado em aplicações Node.js por sua simplicidade e velocidade. Messages transitam em memória — não são persistidas por padrão.
uso real
Notificações em tempo real, invalidação de cache entre instâncias, broadcasting de eventos entre microsserviços que precisam de baixa latência.
javascript
// Pub/Sub com Redis em Node.js (ioredis) const Redis = require('ioredis') const publisher = new Redis() const subscriber = new Redis() // Subscriber — escutar tópico subscriber.subscribe('order:created', (err, count) => { console.log(`Subscrito em ${count} canal(is)`) }) subscriber.on('message', (channel, message) => { const order = JSON.parse(message) console.log('Pedido criado:', order) // Processar: enviar email, atualizar estoque... }) // Publisher — emitir evento async function createOrder(data) { const order = await db.orders.create(data) publisher.publish('order:created', JSON.stringify(order)) return order }
quiz · aula 31
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Qual é a principal diferença entre EventEmitter e Redis Pub/Sub?
QUESTÃO 02
Para invalidar cache de forma sincronizada entre múltiplas instâncias de uma API, você usaria...
QUESTÃO 03
O Redis Pub/Sub persiste mensagens que não foram recebidas?
0/3