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
Pub/Sub externo
Cross-process / cross-service
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